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() })