wlzboy
9 小时以前 5f2ee03958a1a16dc27195c76ea7cffb422c95d1
app/utils/wechat.js
@@ -12,13 +12,24 @@
    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
    
@@ -62,41 +73,77 @@
    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,