| | |
| | | } |
| | | }, |
| | | onLaunch: function(options) { |
| | | console.log('App onLaunch, options:', options); |
| | | this.lastToken = getToken() |
| | | this.initApp(options) |
| | | |
| | |
| | | this.stopMessagePolling() |
| | | this.lastToken = null |
| | | // 清除消息徽标 |
| | | try { |
| | | uni.removeTabBarBadge({ index: 3 }) |
| | | } catch (e) { |
| | | console.error('清除消息徽标失败:', e) |
| | | } |
| | | }) |
| | | }, |
| | | onShow: function() { |
| | |
| | | methods: { |
| | | // 初始化应用 |
| | | initApp(options) { |
| | | try { |
| | | // 初始化应用配置 |
| | | this.initConfig() |
| | | // 检查用户登录状态并自动跳转到合适的登录页面 |
| | | this.checkLoginAndRedirect(options) |
| | | } catch (e) { |
| | | console.error('初始化应用失败:', e) |
| | | } |
| | | |
| | | // 注意:不在应用启动时自动启动轮询 |
| | | // 只有在用户主动登录成功后才启动(通过 user-login 事件触发) |
| | |
| | | }, |
| | | // 检查登录状态并自动跳转到合适的登录页面 |
| | | checkLoginAndRedirect(options) { |
| | | try { |
| | | if (!getToken()) { |
| | | console.log('用户未登录,准备跳转到登录页面') |
| | | // 使用工具类根据环境自动跳转到合适的登录页面 |
| | | redirectToLoginByEnvironment(options, this.$tab); |
| | | } else { |
| | | console.log('用户已登录,无需跳转') |
| | | } |
| | | } catch (e) { |
| | | console.error('检查登录状态并跳转失败:', e) |
| | | // fallback到普通登录页面 |
| | | try { |
| | | this.$tab.reLaunch('/pages/login'); |
| | | } catch (fallbackError) { |
| | | console.error('fallback跳转也失败了:', fallbackError); |
| | | } |
| | | } |
| | | }, |
| | | |
| | | // 判断当前是否在登录页面 |
| | | isLoginPage() { |
| | | try { |
| | | const pages = getCurrentPages() |
| | | if (pages.length === 0) { |
| | | return false |
| | |
| | | const route = currentPage.route || '' |
| | | // 判断是否为登录相关页面 |
| | | return route.includes('login') || route.includes('register') |
| | | } catch (e) { |
| | | console.error('判断是否为登录页面失败:', e) |
| | | return false |
| | | } |
| | | }, |
| | | |
| | | // 更新未读消息徽标 |
| | |
| | | |
| | | if (count > 0) { |
| | | // 设置徽标 |
| | | try { |
| | | uni.setTabBarBadge({ |
| | | index: 3, // 消息页面在tabBar中的索引位置(0开始) |
| | | text: count > 99 ? '99+' : count.toString() |
| | | }) |
| | | } catch (e) { |
| | | console.error('设置消息徽标失败:', e) |
| | | } |
| | | } else { |
| | | // 移除徽标 |
| | | try { |
| | | uni.removeTabBarBadge({ |
| | | index: 3 |
| | | }) |
| | | } catch (e) { |
| | | console.error('移除消息徽标失败:', e) |
| | | } |
| | | } |
| | | }).catch(error => { |
| | | console.error('获取未读消息数量失败:', error) |
| | |
| | | |
| | | // 启动消息轮询 |
| | | startMessagePolling() { |
| | | try { |
| | | // 每30秒轮询一次 |
| | | this.messagePollingTimer = setInterval(() => { |
| | | if (getToken()) { |
| | |
| | | this.stopMessagePolling() |
| | | } |
| | | }, 30000) // 30秒 |
| | | } catch (e) { |
| | | console.error('启动消息轮询失败:', e) |
| | | } |
| | | }, |
| | | |
| | | // 停止消息轮询 |
| | | stopMessagePolling() { |
| | | try { |
| | | if (this.messagePollingTimer) { |
| | | clearInterval(this.messagePollingTimer) |
| | | this.messagePollingTimer = null |
| | | } |
| | | } catch (e) { |
| | | console.error('停止消息轮询失败:', e) |
| | | } |
| | | }, |
| | | |
| | | // 检查存储空间 |
| | |
| | | onLoad(options) { |
| | | // 保存页面参数 |
| | | this.pageOptions = options || {} |
| | | if(isWxWorkEnvironment()){ |
| | | isWxWorkEnvironment().then(res=>{ |
| | | if(res){ |
| | | // console.log("企业微信环境 login.vue....") |
| | | redirectToQyLogin(options,this.$tab); |
| | | } |
| | | }); |
| | | |
| | | }, |
| | | created() { |
| | | this.getCode() |
| | |
| | | }, |
| | | |
| | | onLoad(options) { |
| | | // 添加容错处理 |
| | | try { |
| | | // 保存页面参数 |
| | | this.pageOptions = options || {}; |
| | | // 页面加载时执行免登流程 |
| | | this.qyWechatAutoLogin(); |
| | | } catch (e) { |
| | | console.error('页面加载出错:', e); |
| | | this.loading = false; |
| | | this.error = true; |
| | | this.errorMessage = "页面初始化失败,请重试"; |
| | | } |
| | | }, |
| | | |
| | | methods: { |
| | |
| | | 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); |
| | | // fallback检测 |
| | | resolve(false); |
| | | } |
| | | // #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, |
| | |
| | | basename: i18n/messages |
| | | profiles: |
| | | # 环境 dev|test|prod |
| | | active: dev |
| | | active: prod |
| | | # 文件上传 |
| | | servlet: |
| | | multipart: |
| | |
| | | WHERE vehicle_id = #{vehicleId} |
| | | AND segment_start_time <= #{endDate} |
| | | AND segment_end_time >= #{startDate} |
| | | AND segment_start_time IS NOT NULL |
| | | AND segment_end_time IS NOT NULL |
| | | AND segment_distance >0 |
| | | ORDER BY segment_start_time |
| | | </select> |
| | | |