|  |  |  | 
|---|
|  |  |  | const { | 
|---|
|  |  |  | post | 
|---|
|  |  |  | } = require('../../api/request.js'); | 
|---|
|  |  |  | const { PROJECT_CONFIG } = require('../../utils/projectConfig.js'); | 
|---|
|  |  |  | const { setBaseUrl } = require('../../api/config.js'); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | Page({ | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | }, | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 跳转到账号密码登录页面 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | goToAccountLogin: function() { | 
|---|
|  |  |  | // 获取当前项目信息,传递给accountLogin页面 | 
|---|
|  |  |  | const { selectedProject, projectName } = this.data; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 跳转到账号密码登录页面 | 
|---|
|  |  |  | wx.navigateTo({ | 
|---|
|  |  |  | url: `/pages/accountLogin/accountLogin?project=${selectedProject}&projectName=${projectName}` | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 生命周期函数--监听页面加载 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | onLoad: function (options) { | 
|---|
|  |  |  | 
|---|
|  |  |  | manualNavigate: false // 标记是否是通过编程方式导航的 | 
|---|
|  |  |  | }); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 获取选择的项目 - 优先使用URL参数 | 
|---|
|  |  |  | // 从URL参数获取项目信息 | 
|---|
|  |  |  | if (options && options.project) { | 
|---|
|  |  |  | const project = options.project; | 
|---|
|  |  |  | const projectName = project === 'JYG' ? '嘉峪关项目' : | 
|---|
|  |  |  | project === 'MQ' ? '民勤项目' : | 
|---|
|  |  |  | project === 'TEST' ? '测试项目' : '未知项目'; | 
|---|
|  |  |  | // 直接使用传入的项目名称,不再手动转换 | 
|---|
|  |  |  | const projectName = options.projectName || '默认项目'; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | console.log(`从URL参数获取项目信息: ${project} (${projectName})`); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 更新 BASEURL | 
|---|
|  |  |  | try { | 
|---|
|  |  |  | const { PROJECT_URLS } = require('../../api/config.js'); | 
|---|
|  |  |  | getApp().globalData.baseUrl = PROJECT_URLS[project]; | 
|---|
|  |  |  | // 使用导入的setBaseUrl函数设置baseUrl | 
|---|
|  |  |  | setBaseUrl(project); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 从PROJECT_CONFIG中获取serverUrl | 
|---|
|  |  |  | const serverUrl = PROJECT_CONFIG[project]?.serverUrl; | 
|---|
|  |  |  | if (serverUrl) { | 
|---|
|  |  |  | getApp().globalData.baseUrl = serverUrl; | 
|---|
|  |  |  | console.log('设置baseUrl成功:', serverUrl); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } catch (e) { | 
|---|
|  |  |  | console.error('设置baseUrl失败:', e); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 保存项目选择到本地存储,确保项目信息一致 | 
|---|
|  |  |  | storage.setItem('selectedProject', project) | 
|---|
|  |  |  | .then(() => console.log('成功保存项目选择到存储')) | 
|---|
|  |  |  | .catch(err => console.error('保存项目选择到存储失败:', err)); | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | // 从本地存储获取已选择的项目 | 
|---|
|  |  |  | storage.getItemSafe('selectedProject').then(project => { | 
|---|
|  |  |  | if (project) { | 
|---|
|  |  |  | const projectName = project === 'JYG' ? '嘉峪关项目' : | 
|---|
|  |  |  | project === 'MQ' ? '民勤项目' : | 
|---|
|  |  |  | project === 'TEST' ? '测试项目' : '未知项目'; | 
|---|
|  |  |  | console.log(`从存储获取项目信息: ${project} (${projectName})`); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | this.setData({ | 
|---|
|  |  |  | selectedProject: project, | 
|---|
|  |  |  | projectName: projectName | 
|---|
|  |  |  | // 检查项目配置的登录方式是否与当前页面匹配 | 
|---|
|  |  |  | const projectConfig = PROJECT_CONFIG[project]; | 
|---|
|  |  |  | if (projectConfig && projectConfig.loginType === 'account') { | 
|---|
|  |  |  | console.log(`当前项目配置的登录方式为account,自动跳转到账号密码登录页面`); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 设置手动导航标记,避免触发返回逻辑 | 
|---|
|  |  |  | this.setData({ manualNavigate: true }); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 延迟执行跳转,确保页面完全加载 | 
|---|
|  |  |  | setTimeout(() => { | 
|---|
|  |  |  | wx.redirectTo({ | 
|---|
|  |  |  | url: `/pages/accountLogin/accountLogin?project=${project}&projectName=${projectName}` | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | console.log('未找到已选择的项目,使用默认项目'); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }).catch(err => { | 
|---|
|  |  |  | console.error('获取已选择项目失败:', err); | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | }, 100); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | console.log('未从URL获取到项目信息,使用默认值'); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }, | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | console.log('检测到有上一页,使用navigateBack返回'); | 
|---|
|  |  |  | wx.navigateBack({ | 
|---|
|  |  |  | delta: 1, | 
|---|
|  |  |  | success: () => console.log('navigateBack成功'), | 
|---|
|  |  |  | fail: (err) => { | 
|---|
|  |  |  | console.error('navigateBack失败:', err); | 
|---|
|  |  |  | // 如果navigateBack失败,尝试reLaunch | 
|---|
|  |  |  | this.backupReturnToHome(); | 
|---|
|  |  |  | success: () => { | 
|---|
|  |  |  | // 通过eventChannel向上一个页面传递数据 | 
|---|
|  |  |  | const eventChannel = pages[pages.length - 2].getOpenerEventChannel(); | 
|---|
|  |  |  | if (eventChannel && eventChannel.emit) { | 
|---|
|  |  |  | eventChannel.emit('fromLogin', { fromLogin: true }); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | console.log('已成功返回到上一页面'); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }, | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 备用的返回首页方法 | 
|---|
|  |  |  | backupReturnToHome() { | 
|---|
|  |  |  | console.log('使用备用方法返回首页'); | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 尝试使用switchTab(如果首页在tabBar中) | 
|---|
|  |  |  | const useReLaunch = () => { | 
|---|
|  |  |  | console.log('使用reLaunch返回首页'); | 
|---|
|  |  |  | wx.reLaunch({ | 
|---|
|  |  |  | url: '/pages/home/home?fromLogin=true', | 
|---|
|  |  |  | success: () => console.log('reLaunch成功返回首页'), | 
|---|
|  |  |  | fail: (err) => { | 
|---|
|  |  |  | console.error('reLaunch返回首页失败:', err); | 
|---|
|  |  |  | // 最后的备用方案:使用redirectTo | 
|---|
|  |  |  | setTimeout(() => { | 
|---|
|  |  |  | console.log('延迟使用redirectTo尝试返回首页'); | 
|---|
|  |  |  | wx.redirectTo({ | 
|---|
|  |  |  | url: '/pages/home/home?fromLogin=true', | 
|---|
|  |  |  | success: () => console.log('redirectTo成功返回首页'), | 
|---|
|  |  |  | fail: (err) => console.error('所有返回方法都失败:', err) | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | }, 100); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | }; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 先尝试使用switchTab(某些版本可能将首页设置为tabBar) | 
|---|
|  |  |  | wx.switchTab({ | 
|---|
|  |  |  | url: '/pages/home/home', | 
|---|
|  |  |  | success: () => console.log('switchTab成功返回首页'), | 
|---|
|  |  |  | fail: (err) => { | 
|---|
|  |  |  | console.log('switchTab失败(可能首页不在tabBar中):', err); | 
|---|
|  |  |  | useReLaunch(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 页面相关事件处理函数--监听用户下拉动作 | 
|---|
|  |  |  | 
|---|
|  |  |  | getApp().globalData.clientId = String(data.content.clientId); | 
|---|
|  |  |  | storage.setItem("clientId", String(data.content.clientId)); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 设置当前项目的tag | 
|---|
|  |  |  | const tag = this.data.selectedProject === 'JYG' ? 'ym' : | 
|---|
|  |  |  | this.data.selectedProject === 'MQ' ? 'mq' : | 
|---|
|  |  |  | this.data.selectedProject === 'TEST' ? 'test' : 'unknown'; | 
|---|
|  |  |  | getApp().globalData.tag = tag; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 保存用户信息 | 
|---|
|  |  |  | const userInfo = { | 
|---|
|  |  |  | 
|---|
|  |  |  | clientId: String(data.content.clientId), | 
|---|
|  |  |  | phone: this.data.phone, | 
|---|
|  |  |  | token: data.content.token || '', | 
|---|
|  |  |  | project: this.data.selectedProject, | 
|---|
|  |  |  | tag: tag | 
|---|
|  |  |  | project: this.data.selectedProject | 
|---|
|  |  |  | }; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 保存到全局变量 | 
|---|
|  |  |  | 
|---|
|  |  |  | // 保存userData信息,包含sessionId和tag | 
|---|
|  |  |  | const userData = JSON.stringify({ | 
|---|
|  |  |  | sessionId: String(data.content.sessionId), | 
|---|
|  |  |  | tag: tag | 
|---|
|  |  |  | tag: this.data.selectedProject === 'JYG' ? 'ym' : (this.data.selectedProject === 'MQ' ? 'mq' : 'ym'), | 
|---|
|  |  |  | project: this.data.selectedProject, | 
|---|
|  |  |  | phone: this.data.phone, | 
|---|
|  |  |  | clientName: data.content.clientName || '', | 
|---|
|  |  |  | clientId: String(data.content.clientId) | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | return storage.setItem("userData", userData); | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | 
|---|
|  |  |  | success: () => { | 
|---|
|  |  |  | // 延迟跳转,确保Toast显示完成 | 
|---|
|  |  |  | setTimeout(() => { | 
|---|
|  |  |  | console.log('登录成功,准备跳转到首页'); | 
|---|
|  |  |  | // 跳转到首页,使用reLaunch而不是redirectTo | 
|---|
|  |  |  | wx.redirectTo({ | 
|---|
|  |  |  | url: '/pages/home/home' | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | console.log('登录成功,准备返回到首页'); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 获取当前页面栈 | 
|---|
|  |  |  | const pages = getCurrentPages(); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 检查是否有上一个页面可返回 | 
|---|
|  |  |  | if (pages.length > 1) { | 
|---|
|  |  |  | // 应用一个技巧,先设置前一个页面的参数 | 
|---|
|  |  |  | try { | 
|---|
|  |  |  | if (pages.length > 1) { | 
|---|
|  |  |  | const prevPage = pages[pages.length - 2]; | 
|---|
|  |  |  | if (prevPage && prevPage.options) { | 
|---|
|  |  |  | // 设置 fromLogin 参数 | 
|---|
|  |  |  | prevPage.options.fromLogin = 'true'; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 如果页面有onLoad方法,则可能需要传递参数 | 
|---|
|  |  |  | if (typeof prevPage.onLoad === 'function') { | 
|---|
|  |  |  | let newOptions = {...prevPage.options}; | 
|---|
|  |  |  | newOptions.fromLogin = 'true'; | 
|---|
|  |  |  | prevPage.onLoad(newOptions); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } catch (e) { | 
|---|
|  |  |  | console.error('设置前一页参数失败:', e); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 返回到上一个页面 | 
|---|
|  |  |  | wx.navigateBack({ | 
|---|
|  |  |  | delta: 1, | 
|---|
|  |  |  | success: () => { | 
|---|
|  |  |  | console.log('已成功返回到上一页面'); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | fail: (err) => { | 
|---|
|  |  |  | console.error('navigateBack失败:', err); | 
|---|
|  |  |  | // 如果返回失败,使用重定向 | 
|---|
|  |  |  | wx.redirectTo({ | 
|---|
|  |  |  | url: '/pages/home/home?fromLogin=true' | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | // 如果没有上一个页面,则重新打开home页面 | 
|---|
|  |  |  | wx.redirectTo({ | 
|---|
|  |  |  | url: '/pages/home/home?fromLogin=true' | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }, 1500); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }); | 
|---|