| | |
| | | try { |
| | | // 获取系统信息 |
| | | const systemInfo = uni.getSystemInfoSync(); |
| | | console.log('系统信息:', systemInfo); |
| | | |
| | | // 检查environment字段是否为wxwork |
| | | resolve(systemInfo.environment === 'wxwork'); |
| | | const isWxWork = systemInfo.environment === 'wxwork'; |
| | | console.log('环境检测结果:', isWxWork, systemInfo); |
| | | resolve(isWxWork); |
| | | } catch (e) { |
| | | console.error('获取系统信息失败:', e); |
| | | resolve(false); |
| | | // fallback检测:尝试使用wx.qy对象判断 |
| | | try { |
| | | if (typeof wx !== 'undefined' && wx.qy) { |
| | | console.log('通过wx.qy对象检测到企业微信环境'); |
| | | resolve(true); |
| | | } else { |
| | | resolve(false); |
| | | } |
| | | } catch (e2) { |
| | | console.error('fallback检测也失败:', e2); |
| | | resolve(false); |
| | | } |
| | | } |
| | | // #endif |
| | | |
| | |
| | | if (isWxWork) { |
| | | console.log('检测到企业微信环境,跳转到企业微信免登页面'); |
| | | // 构造带参数的URL |
| | | redirectToQyLogin(options,tab); |
| | | redirectToQyLogin(options, tab); |
| | | return; |
| | | } else { |
| | | console.log('检测到普通微信环境,跳转到微信登录页面'); |
| | | redirectToLogin(options,tab); |
| | | redirectToLogin(options, tab); |
| | | return; |
| | | } |
| | | } catch (e) { |
| | | console.error('环境检测失败:', e); |
| | | redirectToLogin(options,tab); |
| | | redirectToLogin(options, tab); |
| | | } |
| | | // #endif |
| | | |
| | | // #ifndef MP-WEIXIN |
| | | // 非微信小程序环境,跳转到普通登录页面 |
| | | console.log('非微信小程序环境,跳转到普通登录页面'); |
| | | redirectToLogin(options,tab); |
| | | redirectToLogin(options, tab); |
| | | // #endif |
| | | } |
| | | |
| | | |
| | | export function redirectToQyLogin(options,tab){ |
| | | export function redirectToQyLogin(options, tab) { |
| | | try { |
| | | let url = '/pages/qylogin'; |
| | | if (options && options.query) { |
| | | url = buildUrlWithParams(url, options.query); |
| | | // 保存目标URL用于登录后跳转 |
| | | if (options && options.path && options.path !== 'pages/qylogin') { |
| | | // 构造完整的路径和查询参数 |
| | | let fullPath = '/' + options.path; |
| | | if (options.query) { |
| | | const queryString = Object.keys(options.query).map(key => |
| | | `${key}=${encodeURIComponent(options.query[key])}`).join('&'); |
| | | if (queryString) { |
| | | fullPath += '?' + queryString; |
| | | } |
| | | } |
| | | tab.reLaunch(url); |
| | | |
| | | // 添加redirect参数 |
| | | const separator = fullPath.includes('?') ? '&' : '?'; |
| | | url += `${separator}redirect=${encodeURIComponent(fullPath)}`; |
| | | } else if (options && options.query) { |
| | | url = buildUrlWithParams(url, options.query); |
| | | } |
| | | |
| | | console.log('跳转到企业微信登录页面:', url); |
| | | tab.reLaunch(url); |
| | | } catch (e) { |
| | | console.error('跳转到企业微信登录页面失败:', e); |
| | | // fallback到普通登录页面 |
| | | redirectToLogin(options, tab); |
| | | } |
| | | } |
| | | export function redirectToLogin(options,tab){ |
| | | |
| | | export function redirectToLogin(options, tab) { |
| | | try { |
| | | let url = '/pages/login'; |
| | | if (options && options.query) { |
| | | url = buildUrlWithParams(url, options.query); |
| | | } |
| | | tab.reLaunch(url); |
| | | if (options && options.query) { |
| | | url = buildUrlWithParams(url, options.query); |
| | | } |
| | | console.log('跳转到普通登录页面:', url); |
| | | tab.reLaunch(url); |
| | | } catch (e) { |
| | | console.error('跳转到普通登录页面失败:', e); |
| | | // 如果跳转失败,至少确保不会卡在当前页面 |
| | | try { |
| | | tab.reLaunch('/pages/login'); |
| | | } catch (fallbackError) { |
| | | console.error('fallback跳转也失败了:', fallbackError); |
| | | } |
| | | } |
| | | } |
| | | |
| | | export default { |
| | | isWxWorkEnvironment, |
| | | buildUrlWithParams, |