/** * 微信环境检测和跳转工具类 */ /** * 检查是否为企业微信环境 * @returns {Promise} 是否为企业微信环境 */ export function isWxWorkEnvironment() { return new Promise((resolve) => { // #ifdef MP-WEIXIN try { // 获取系统信息 const systemInfo = uni.getSystemInfoSync(); // 检查environment字段是否为wxwork const isWxWork = systemInfo.environment === 'wxwork'; console.log('环境检测结果:', isWxWork, systemInfo); resolve(isWxWork); } catch (e) { console.error('获取系统信息失败:', e); // fallback检测 resolve(false); } // #endif // #ifndef MP-WEIXIN resolve(false); // #endif }); } /** * 构造带参数的URL * @param {string} baseUrl 基础URL * @param {Object} queryParameters 查询参数对象 * @returns {string} 构造后的URL */ export function buildUrlWithParams(baseUrl, queryParameters) { if (!queryParameters) return baseUrl; const queryParams = Object.keys(queryParameters) .map(key => `${key}=${encodeURIComponent(queryParameters[key])}`) .join('&'); if (queryParams) { return baseUrl + '?' + queryParams; } return baseUrl; } /** * 根据环境自动跳转到合适的登录页面 * @param {Object} options 启动参数 * @param {Object} tab tab导航对象 */ export async function redirectToLoginByEnvironment(options, tab) { // #ifdef MP-WEIXIN // 在微信小程序环境中 try { const isWxWork = await isWxWorkEnvironment(); if (isWxWork) { console.log('检测到企业微信环境,跳转到企业微信免登页面'); // 构造带参数的URL redirectToQyLogin(options, tab); return; } else { console.log('检测到普通微信环境,跳转到微信登录页面'); redirectToLogin(options, tab); return; } } catch (e) { console.error('环境检测失败:', e); redirectToLogin(options, tab); } // #endif // #ifndef MP-WEIXIN // 非微信小程序环境,跳转到普通登录页面 console.log('非微信小程序环境,跳转到普通登录页面'); redirectToLogin(options, tab); // #endif } export function redirectToQyLogin(options, tab) { try { let url = '/pages/qylogin'; 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) { try { let url = '/pages/login'; 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, redirectToLogin, redirectToQyLogin, redirectToLoginByEnvironment };