| const app = getApp(); | 
| const storage = require('../../utils/storage.js'); | 
| const { | 
|   post | 
| } = require('../../api/request.js'); | 
| const { PROJECT_CONFIG } = require('../../utils/projectConfig.js'); | 
| const { setBaseUrl } = require('../../api/config.js'); | 
|   | 
| Page({ | 
|   | 
|   /** | 
|    * 页面的初始数据 | 
|    */ | 
|   data: { | 
|     username: '', | 
|     password: '', | 
|     passwordVisible: false, | 
|     projectName: '嘉峪关项目', // 默认项目名称 | 
|     selectedProject: 'JYG', // 默认项目代码 | 
|     showErrorDialog: false, | 
|     fromBack: false,  // 标记是否是从返回按钮返回的 | 
|     manualNavigate: false // 标记是否是通过编程方式导航的 | 
|   }, | 
|   | 
|   /** | 
|    * 绑定用户名输入 | 
|    */ | 
|   bindUsernameInput: function (e) { | 
|     this.setData({ | 
|       username: e.detail.value | 
|     }); | 
|   }, | 
|   | 
|   /** | 
|    * 绑定密码输入 | 
|    */ | 
|   bindPasswordInput: function (e) { | 
|     this.setData({ | 
|       password: e.detail.value | 
|     }); | 
|   }, | 
|   | 
|   /** | 
|    * 切换密码显示状态 | 
|    */ | 
|   togglePasswordVisibility: function () { | 
|     this.setData({ | 
|       passwordVisible: !this.data.passwordVisible | 
|     }); | 
|   }, | 
|   | 
|   /** | 
|    * 登录 | 
|    */ | 
|   login: function () { | 
|     const { | 
|       username, | 
|       password | 
|     } = this.data; | 
|   | 
|     // 验证用户名和密码 | 
|     if (!username.trim()) { | 
|       wx.showToast({ | 
|         title: '请输入用户名', | 
|         icon: 'none' | 
|       }); | 
|       return; | 
|     } | 
|   | 
|     if (!password.trim()) { | 
|       wx.showToast({ | 
|         title: '请输入密码', | 
|         icon: 'none' | 
|       }); | 
|       return; | 
|     } | 
|   | 
|     // 显示加载中 | 
|     wx.showLoading({ | 
|       title: '登录中...', | 
|       mask: true | 
|     }); | 
|      | 
|     // 标记为手动导航,确保不会触发返回逻辑 | 
|     console.log('登录按钮点击,设置manualNavigate=true'); | 
|     this.setData({ | 
|       manualNavigate: true | 
|     }); | 
|      | 
|     this.accountLogin(); | 
|   }, | 
|   | 
|   /** | 
|    * 跳转到注册页面 | 
|    */ | 
|   goToRegister: function () { | 
|     wx.showToast({ | 
|       title: '注册功能暂未开放', | 
|       icon: 'none', | 
|       duration: 2000 | 
|     }); | 
|   }, | 
|   | 
|   /** | 
|    * 跳转到忘记密码页面 | 
|    */ | 
|   goToForgetPassword: function () { | 
|     wx.showToast({ | 
|       title: '找回密码功能暂未开放', | 
|       icon: 'none', | 
|       duration: 2000 | 
|     }); | 
|   }, | 
|   | 
|   | 
|   /** | 
|    * 生命周期函数--监听页面加载 | 
|    */ | 
|   onLoad: function (options) { | 
|     console.log('accountLogin页面加载,options:', options); | 
|      | 
|     // 设置页面数据 | 
|     this.setData({ | 
|       fromBack: false,  // 标记是否是从返回按钮返回的 | 
|       manualNavigate: false // 标记是否是通过编程方式导航的 | 
|     }); | 
|      | 
|     // 从URL参数获取项目信息 | 
|     if (options && options.project) { | 
|       const project = options.project; | 
|       // 直接使用传入的项目名称,不再手动转换 | 
|       const projectName = options.projectName || '默认项目'; | 
|        | 
|       console.log(`从URL参数获取项目信息: ${project} (${projectName})`); | 
|        | 
|       this.setData({ | 
|         selectedProject: project, | 
|         projectName: projectName | 
|       }); | 
|        | 
|       // 同步更新全局项目设置 | 
|       if (getApp().globalData) { | 
|         getApp().globalData.selectedProject = project; | 
|          | 
|         // 设置对应的tag | 
|         if (project === 'JYG') { | 
|           getApp().globalData.tag = 'ym'; | 
|         } else if (project === 'MQ') { | 
|           getApp().globalData.tag = 'mq'; | 
|         } | 
|          | 
|         // 更新 BASEURL | 
|         try { | 
|           // 使用导入的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); | 
|         } | 
|       } | 
|        | 
|       // 检查项目配置的登录方式是否与当前页面匹配 | 
|       const projectConfig = PROJECT_CONFIG[project]; | 
|       if (projectConfig && projectConfig.loginType !== 'account') { | 
|         console.log(`当前项目配置的登录方式为${projectConfig.loginType},自动跳转到验证码登录页面`); | 
|          | 
|         // 设置手动导航标记,避免触发返回逻辑 | 
|         this.setData({ manualNavigate: true }); | 
|          | 
|         // 延迟执行跳转,确保页面完全加载 | 
|         setTimeout(() => { | 
|           wx.redirectTo({ | 
|             url: `/pages/login/login?project=${project}&projectName=${projectName}` | 
|           }); | 
|         }, 100); | 
|       } | 
|     } else { | 
|       console.log('未从URL获取到项目信息,使用默认值'); | 
|     } | 
|   }, | 
|   | 
|   /** | 
|    * 生命周期函数--监听页面初次渲染完成 | 
|    */ | 
|   onReady() { | 
|   | 
|   }, | 
|   | 
|   /** | 
|    * 生命周期函数--监听页面显示 | 
|    */ | 
|   onShow() { | 
|   | 
|   }, | 
|   | 
|   /** | 
|    * 生命周期函数--监听页面隐藏 | 
|    */ | 
|   onHide() { | 
|     // 如果不是通过编程方式导航,则可能是点击了返回按钮 | 
|     // 注意:在某些情况下,微信可能会直接调用onUnload而跳过onHide | 
|     if (!this.data.manualNavigate) { | 
|       console.log('页面隐藏,可能是点击了返回按钮'); | 
|       this.setData({ | 
|         fromBack: true | 
|       }); | 
|     } | 
|   }, | 
|   | 
|   /** | 
|    * 生命周期函数--监听页面卸载 | 
|    */ | 
|   onUnload() { | 
|     console.log('页面卸载,fromBack=', this.data.fromBack); | 
|     console.log('页面卸载,manualNavigate=', this.data.manualNavigate); | 
|      | 
|     // 如果是从返回按钮返回的,且不是通过编程方式导航 | 
|     if (this.data.fromBack && !this.data.manualNavigate) { | 
|       console.log('检测到从返回按钮返回,跳转到首页'); | 
|       wx.reLaunch({ | 
|         url: '/pages/index/index' | 
|       }); | 
|     } | 
|   }, | 
|   | 
|   /** | 
|    * 页面相关事件处理函数--监听用户下拉动作 | 
|    */ | 
|   onPullDownRefresh() { | 
|   | 
|   }, | 
|   | 
|   /** | 
|    * 页面上拉触底事件的处理函数 | 
|    */ | 
|   onReachBottom() { | 
|   | 
|   }, | 
|   | 
|   /** | 
|    * 用户点击右上角分享 | 
|    */ | 
|   onShareAppMessage() { | 
|     return { | 
|       title: '大禹节水灌溉系统', | 
|       path: '/pages/index/index', | 
|       imageUrl: '/images/share-img.jpg' // 自定义分享图片 | 
|     }; | 
|   }, | 
|   | 
|   /** | 
|    * 账号密码登录 | 
|    */ | 
|   accountLogin() { | 
|     const { username, password, selectedProject } = this.data; | 
|      | 
|     // 构建请求参数 | 
|     const data = { | 
|       username: username, | 
|       password: password | 
|     }; | 
|      | 
|     // 发送登录请求 | 
|     post({ | 
|       url: '/wx/user/passwordLogin', | 
|       data: data, | 
|       isShowLoding: true | 
|     }).then(res => { | 
|       // 隐藏加载提示 | 
|       wx.hideLoading(); | 
|        | 
|       if (res && res.success) { | 
|         // 登录成功,保存token等信息 | 
|         storage.set('token', res.content.token); | 
|         storage.set('userInfo', res.content); | 
|          | 
|         // 更新全局数据 | 
|         if (app.globalData) { | 
|           app.globalData.token = res.content.token; | 
|           app.globalData.userInfo = res.content; | 
|         } | 
|          | 
|         // 跳转到首页 | 
|         wx.switchTab({ | 
|           url: '/pages/home/home' | 
|         }); | 
|       } else { | 
|         // 登录失败 | 
|         wx.showToast({ | 
|           title: res.msg || '登录失败,请检查账号密码', | 
|           icon: 'none', | 
|           duration: 2000 | 
|         }); | 
|       } | 
|     }).catch(err => { | 
|       // 隐藏加载提示 | 
|       wx.hideLoading(); | 
|        | 
|       // 显示错误信息 | 
|       wx.showToast({ | 
|         title: '网络错误,请稍后重试', | 
|         icon: 'none', | 
|         duration: 2000 | 
|       }); | 
|        | 
|       console.error('登录失败:', err); | 
|     }); | 
|   } | 
| });  |