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); }); } });