/** * 微信环境检测和跳转工具类 */ /** * 检查是否为企业微信环境 * @returns {Promise} 是否为企业微信环境 */ export function isWxWorkEnvironment() { return new Promise((resolve) => { // #ifdef MP-WEIXIN try { // 获取系统信息 const systemInfo = uni.getSystemInfoSync(); console.log('系统信息:', systemInfo); // 检查environment字段是否为wxwork resolve(systemInfo.environment === 'wxwork'); } catch (e) { console.error('获取系统信息失败:', e); 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){ let url = '/pages/qylogin'; if (options && options.query) { url = buildUrlWithParams(url, options.query); } tab.reLaunch(url); } export function redirectToLogin(options,tab){ let url = '/pages/login'; if (options && options.query) { url = buildUrlWithParams(url, options.query); } tab.reLaunch(url); } export default { isWxWorkEnvironment, buildUrlWithParams, redirectToLogin, redirectToQyLogin, redirectToLoginByEnvironment };