From ad969e39d458d4cd39bc52be42e5150ce3cdc98b Mon Sep 17 00:00:00 2001 From: yuliang_guo Date: Thu, 29 Jan 2026 17:18:40 +0800 Subject: [PATCH] =?UTF-8?q?debug:=20=E6=B7=BB=E5=8A=A0=E9=92=89=E9=92=89?= =?UTF-8?q?=E5=85=8D=E5=AF=86=E7=99=BB=E5=BD=95=E8=B0=83=E8=AF=95=E6=97=A5?= =?UTF-8?q?=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/src/utils/dingtalk.ts | 22 +++++++++++++++++++--- frontend/src/views/login/index.vue | 29 ++++++++++++++++++++++++++--- 2 files changed, 45 insertions(+), 6 deletions(-) diff --git a/frontend/src/utils/dingtalk.ts b/frontend/src/utils/dingtalk.ts index 11bad3f..6652454 100644 --- a/frontend/src/utils/dingtalk.ts +++ b/frontend/src/utils/dingtalk.ts @@ -44,9 +44,25 @@ export interface DingtalkConfig { * 检测是否在钉钉环境中 */ export function isDingtalkEnv(): boolean { - if (typeof window === 'undefined') return false - if (!window.dd) return false - return window.dd.env.platform !== 'notInDingTalk' + if (typeof window === 'undefined') { + console.log('[钉钉检测] window 不存在') + return false + } + + // 首先通过 User-Agent 检测 + const ua = navigator.userAgent.toLowerCase() + const isDingTalkUA = ua.includes('dingtalk') || ua.includes('aliapp') + console.log('[钉钉检测] UA检测:', isDingTalkUA, 'UA:', ua.substring(0, 100)) + + if (!window.dd) { + console.log('[钉钉检测] window.dd 不存在,但UA检测为:', isDingTalkUA) + return isDingTalkUA // 如果 UA 显示是钉钉但 SDK 还没加载,也返回 true + } + + const platform = window.dd.env?.platform + console.log('[钉钉检测] dd.env.platform:', platform) + + return platform !== 'notInDingTalk' } /** diff --git a/frontend/src/views/login/index.vue b/frontend/src/views/login/index.vue index efb448b..044fb7e 100644 --- a/frontend/src/views/login/index.vue +++ b/frontend/src/views/login/index.vue @@ -314,37 +314,60 @@ const handleDingtalkLogin = () => { */ const initDingtalkLogin = async () => { try { + console.log('[钉钉初始化] 开始初始化...') + console.log('[钉钉初始化] window.dd 存在:', !!window.dd) + console.log('[钉钉初始化] User-Agent:', navigator.userAgent) + // 获取钉钉配置 const response = await getDingtalkConfig() + console.log('[钉钉初始化] 配置响应:', response) + if (response.code === 200 && response.data) { dingtalkConfig.enabled = response.data.enabled dingtalkConfig.corp_id = response.data.corp_id dingtalkConfig.agent_id = response.data.agent_id + console.log('[钉钉初始化] 配置已加载:', { enabled: dingtalkConfig.enabled, corp_id: dingtalkConfig.corp_id }) } // 检测钉钉环境 isDingtalk.value = isDingtalkEnv() + console.log('[钉钉初始化] 环境检测结果:', isDingtalk.value) + + if (window.dd) { + console.log('[钉钉初始化] dd.env.platform:', window.dd.env?.platform) + } // 如果在钉钉环境中且钉钉登录已启用,自动触发登录 if (isDingtalk.value && dingtalkConfig.enabled && dingtalkConfig.corp_id) { + console.log('[钉钉初始化] 条件满足,触发自动登录') autoDingtalkLogin() + } else { + console.log('[钉钉初始化] 条件不满足,不触发自动登录:', { + isDingtalk: isDingtalk.value, + enabled: dingtalkConfig.enabled, + corp_id: dingtalkConfig.corp_id + }) } } catch (error) { - console.error('初始化钉钉登录失败:', error) + console.error('[钉钉初始化] 初始化失败:', error) } } // 页面加载时初始化 onMounted(async () => { + console.log('[登录页] 页面加载,开始初始化') + console.log('[登录页] 初始 window.dd:', !!window.dd) + // 尝试加载钉钉SDK try { await loadDingtalkSDK() + console.log('[登录页] SDK加载完成,window.dd:', !!window.dd) } catch (e) { - console.log('钉钉SDK加载跳过(非必须)') + console.log('[登录页] 钉钉SDK加载跳过:', e) } // 初始化钉钉登录 - initDingtalkLogin() + await initDingtalkLogin() })