管灌系统农户端微信小程序(嘉峪关应用)
pages/login/login.js
@@ -3,6 +3,8 @@
const {
  post
} = require('../../api/request.js');
const { PROJECT_CONFIG } = require('../../utils/projectConfig.js');
const { setBaseUrl } = require('../../api/config.js');
Page({
@@ -174,6 +176,19 @@
  },
  /**
   * 跳转到账号密码登录页面
   */
  goToAccountLogin: function() {
    // 获取当前项目信息,传递给accountLogin页面
    const { selectedProject, projectName } = this.data;
    // 跳转到账号密码登录页面
    wx.navigateTo({
      url: `/pages/accountLogin/accountLogin?project=${selectedProject}&projectName=${projectName}`
    });
  },
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
@@ -185,12 +200,11 @@
      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})`);
      
@@ -212,36 +226,37 @@
        
        // 更新 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获取到项目信息,使用默认值');
    }
  },
@@ -310,11 +325,13 @@
        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 {
@@ -327,41 +344,9 @@
    }
  },
  
  // 备用的返回首页方法
  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();
      }
    });
  },
  /**
   * 页面相关事件处理函数--监听用户下拉动作
@@ -469,11 +454,6 @@
        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 = {
@@ -481,8 +461,7 @@
          clientId: String(data.content.clientId),
          phone: this.data.phone,
          token: data.content.token || '',
          project: this.data.selectedProject,
          tag: tag
          project: this.data.selectedProject
        };
        
        // 保存到全局变量
@@ -499,7 +478,11 @@
            // 保存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);
          })
@@ -549,11 +532,53 @@
      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);
      }
    });