diff --git a/src/App.vue b/src/App.vue index 2db1b9c..782c0f6 100644 --- a/src/App.vue +++ b/src/App.vue @@ -9,6 +9,7 @@ import { useAppStore } from "@/stores/appStore"; import { useWeixinShare } from "@/composables/useWeixinShare"; import BindPhoneDialog from "@/components/BindPhoneDialog.vue"; import BindPhoneOnlyDialog from "@/components/BindPhoneOnlyDialog.vue"; +import WechatOverlay from "@/components/WechatOverlay.vue"; const router = useRouter(); const route = useRoute(); @@ -265,66 +266,67 @@ const refreshTokenIfNeeded = async () => { * 这个逻辑已经在路由守卫中实现了 * 这里保留这个函数的备份,以防需要其他地方调用 */ -const getWeixinAuthUrl = () => { - const isAuthenticated = localStorage.getItem("token"); +// const getWeixinAuthUrl = () => { +// const isAuthenticated = localStorage.getItem("token"); - // 检查 token 是否过期 - const accessExpire = localStorage.getItem("accessExpire"); - const now = Date.now(); - let isTokenExpired = false; - if (accessExpire) { - isTokenExpired = now > parseInt(accessExpire) * 1000; - } - console.log("WeChat auth check:", { - isWeChat: isWeChat.value, - isAuthenticated, - isTokenExpired - }); - if (isWeChat.value && !isAuthenticated && !isTokenExpired) { - console.log("🔄 Initiating WeChat auth flow"); - // 如果正在授权中或已完成授权,则阻止重复授权 - console.log("Auth store state:", { - isWeixinAuthing: authStore.isWeixinAuthing, - weixinAuthComplete: authStore.weixinAuthComplete - }); - if (authStore.isWeixinAuthing || authStore.weixinAuthComplete) { - return; - } - // 保存目标路由 - authStore.startWeixinAuth(route); - console.log("🔖 Saved pendingRoute for WeChat auth:", route.fullPath); - const appId = import.meta.env.VITE_WECHAT_APP_ID; - const url = new URL(window.location.href); - const params = new URLSearchParams(url.search); - params.delete("code"); - params.delete("state"); +// // 检查 token 是否过期 +// const accessExpire = localStorage.getItem("accessExpire"); +// const now = Date.now(); +// let isTokenExpired = false; +// if (accessExpire) { +// isTokenExpired = now > parseInt(accessExpire) * 1000; +// } +// console.log("WeChat auth check:", { +// isWeChat: isWeChat.value, +// isAuthenticated, +// isTokenExpired +// }); +// if (isWeChat.value && !isAuthenticated && !isTokenExpired) { +// console.log("🔄 Initiating WeChat auth flow"); +// // 如果正在授权中或已完成授权,则阻止重复授权 +// console.log("Auth store state:", { +// isWeixinAuthing: authStore.isWeixinAuthing, +// weixinAuthComplete: authStore.weixinAuthComplete +// }); +// if (authStore.isWeixinAuthing || authStore.weixinAuthComplete) { +// return; +// } +// // 保存目标路由 +// authStore.startWeixinAuth(route); +// console.log("🔖 Saved pendingRoute for WeChat auth:", route.fullPath); +// const appId = import.meta.env.VITE_WECHAT_APP_ID; +// const url = new URL(window.location.href); +// const params = new URLSearchParams(url.search); +// params.delete("code"); +// params.delete("state"); - // 使用配置的固定域名,如果没有配置则使用当前域名 - const redirectDomain = import.meta.env.VITE_WECHAT_REDIRECT_DOMAIN || url.origin; - const cleanUrl = `${redirectDomain}${url.pathname}${params.toString() ? "?" + params.toString() : "" - }`; - const redirectUri = encodeURIComponent(cleanUrl); +// // 使用配置的固定域名,如果没有配置则使用当前域名 +// const redirectDomain = import.meta.env.VITE_WECHAT_REDIRECT_DOMAIN || url.origin; +// const cleanUrl = `${redirectDomain}${url.pathname}${params.toString() ? "?" + params.toString() : "" +// }`; +// const redirectUri = encodeURIComponent(cleanUrl); - console.log("🔗 WeChat redirectUri config:", { - configuredDomain: import.meta.env.VITE_WECHAT_REDIRECT_DOMAIN || "未配置(使用当前域名)", - currentOrigin: url.origin, - finalRedirectDomain: redirectDomain, - redirectUri: cleanUrl - }); - const weixinAuthUrl = `https://open.weixin.qq.com/connect/oauth2/authorize?appid=${appId}&redirect_uri=${redirectUri}&response_type=code&scope=snsapi_base&state=snsapi_base#wechat_redirect`; +// console.log("🔗 WeChat redirectUri config:", { +// configuredDomain: import.meta.env.VITE_WECHAT_REDIRECT_DOMAIN || "未配置(使用当前域名)", +// currentOrigin: url.origin, +// finalRedirectDomain: redirectDomain, +// redirectUri: cleanUrl +// }); +// const weixinAuthUrl = `https://open.weixin.qq.com/connect/oauth2/authorize?appid=${appId}&redirect_uri=${redirectUri}&response_type=code&scope=snsapi_base&state=snsapi_base#wechat_redirect`; - console.log( - "🔄 Triggering WeChat auth from route guard, pendingRoute:", - route.fullPath - ); - window.location.href = weixinAuthUrl; - } -}; +// console.log( +// "🔄 Triggering WeChat auth from route guard, pendingRoute:", +// route.fullPath +// ); +// window.location.href = weixinAuthUrl; +// } +// }; diff --git a/src/components/InquireForm.vue b/src/components/InquireForm.vue index c013297..3e4ddf1 100644 --- a/src/components/InquireForm.vue +++ b/src/components/InquireForm.vue @@ -232,7 +232,7 @@ const isIdCardValid = computed(() => /^\d{17}[\dX]$/i.test(formData.idCard)); const isLoggedIn = computed(() => userStore.isLoggedIn); const buttonText = computed(() => { - return isLoggedIn.value ? '立即查询' : '前往登录'; + return '立即查询'; // 不需要登录,始终显示"立即查询" }); // 获取产品背景图片 @@ -322,33 +322,14 @@ function handleBindSuccess() { // 处理输入框点击事件 const handleInputClick = async () => { - if (!isLoggedIn.value) { - if (!isWeChat.value && props.type !== 'promotion') { - try { - await showConfirmDialog({ - title: '提示', - message: '您需要登录后才能进行查询,是否前往登录?', - confirmButtonText: '前往登录', - cancelButtonText: '取消', - }); - router.push('/login'); - } catch { - // 用户点击取消,什么都不做 - } - } - } else { - if (isWeChat.value && !userStore.mobile && props.type !== 'promotion') { - dialogStore.openBindPhone(); - } + // 不需要登录检查,允许未登录用户使用 + // 如果已登录且在微信环境且未绑定手机号,提示绑定 + if (isLoggedIn.value && isWeChat.value && !userStore.mobile && props.type !== 'promotion') { + dialogStore.openBindPhone(); } }; function handleSubmit() { - if (!isWeChat.value && !isLoggedIn.value && props.type !== 'promotion') { - router.push('/login'); - return; - } - // 基本协议验证 if (!formData.agreeToTerms) { showToast({ message: `请阅读并同意用户协议和隐私政策` }); @@ -379,8 +360,9 @@ function handleSubmit() { return; } - // 检查是否需要绑定手机号 - if (!userStore.mobile && props.type !== 'promotion') { + // 不需要登录也能查询,直接提交请求 + // 如果是已登录用户在微信环境且未绑定手机号,提示绑定(但不强制) + if (isLoggedIn.value && !userStore.mobile && props.type !== 'promotion' && isWeChat.value) { pendingPayment.value = true; dialogStore.openBindPhone(); } else { diff --git a/src/components/Payment.vue b/src/components/Payment.vue index fcda4c4..6f96397 100644 --- a/src/components/Payment.vue +++ b/src/components/Payment.vue @@ -38,7 +38,7 @@ - +