wlzboy
5 天以前 3bbd80a63ac7728ac01b641a48a26befcb171a0f
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
/**
 * 微信环境检测和跳转工具类
 */
 
/**
 * 检查是否为企业微信环境
 * @returns {Promise<boolean>} 是否为企业微信环境
 */
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
};