管灌系统农户端微信小程序(嘉峪关应用)
pages/home/home.js
@@ -35,7 +35,8 @@
    showProjectDialog: false,
    selectedProject: '',
    avatarTapCount: 0,
    isFromLogin: false
    isFromLogin: false,
    showTipDialog:''
  },
  openValve: function (e) {
@@ -91,7 +92,12 @@
   */
  onLoad(options) {
    console.log('home页面onLoad开始,参数:', options);
     //当开阀成功后调用刷新
    if (options.param === "1" || options.param === "2") {
        this.setData({
          options: options
        })
      }
    // 检查是否从登录页面返回
    let fromLogin = false;
@@ -165,14 +171,46 @@
          // 根据项目设置对应的tag
          if (project === 'JYG') {
            getApp().globalData.tag = 'ym'; // 嘉峪关项目对应tag为ym
            this.setData({
              userName: "嘉峪关项目"
            });
          } else if (project === 'MQ') {
            getApp().globalData.tag = 'mq'; // 民勤项目对应tag为mq
            this.setData({
              userName: "民勤项目"
            });
            // 加载民勤项目持久化参数
            return storage.getItemSafe('MQ_params')
              .then(params => {
                if (params) {
                  getApp().globalData.operator = params.operator;
                  getApp().globalData.clientId = params.clientId;
                  getApp().globalData.isLoggedIn = params.isLoggedIn;
                  getApp().globalData.sessionId = params.sessionId;
                }
                return Promise.resolve();
              });
          } else if (project === 'TEST') {
            getApp().globalData.tag = 'ym'; // 测试项目对应tag为test
            this.setData({
              userName: "测试项目"
            });
            // 加载测试项目持久化参数
            return storage.getItemSafe('TEST_params')
              .then(params => {
                if (params) {
                  getApp().globalData.operator = params.operator;
                  getApp().globalData.clientId = params.clientId;
                  getApp().globalData.isLoggedIn = params.isLoggedIn;
                  getApp().globalData.sessionId = params.sessionId;
                  getApp().globalData.vcId = params.vcId;
                }
                return Promise.resolve();
              });
          }
          console.log('加载已保存的项目:', project, '域名:', baseUrl, 'tag:', getApp().globalData.tag);
          // 检查sessionId是否存在
          return storage.getItemSafe('sessionId');
          // 继续初始化页面
          this.continueInitPage(options);
        } else {
          // 首次进入,显示项目选择弹窗
          this.setData({
@@ -184,26 +222,7 @@
          }); // 终止后续处理
        }
      })
      .then(sessionId => {
        if (sessionId) {
          // 如果sessionId存在,设置全局登录状态
          getApp().globalData.sessionId = sessionId;
          getApp().globalData.isLoggedIn = true;
          // 尝试获取clientId
          return storage.getItemSafe('clientId');
        } else {
          return Promise.reject({
            type: 'session_not_found',
            message: '未找到sessionId'
          });
        }
      })
      .then(clientId => {
        if (clientId) {
          getApp().globalData.clientId = clientId;
        }
      .then(() => {
        // 继续初始化页面
        this.continueInitPage(options);
      })
@@ -231,26 +250,6 @@
          return;
        }
        // 处理未找到sessionId的情况
        if (error.type === 'session_not_found' && this.data.selectedProject) {
          // 检查是否已从登录页返回
          const isReturning = this.getFromLogin();
          console.log('未找到sessionId,是否从登录页返回:', isReturning);
          // 如果已经是从登录页返回的,不要再跳回去
          if (isReturning) {
            console.log('已经从登录页返回,不再跳转回去');
            this.continueInitPage(options);
            return;
          }
          console.log('未找到sessionId,跳转到登录页');
          wx.redirectTo({
            url: `/pages/login/login?project=${this.data.selectedProject}`
          });
          return;
        }
        // 其他未知错误,尝试继续初始化页面
        console.warn('未知错误,尝试继续初始化页面:', error);
        this.continueInitPage(options);
@@ -261,7 +260,22 @@
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {
    if (this.data.options.param === "1") {
        this.setData({
          showTipDialog: true,
          tipData: "开阀命令下发成功,因开阀需要时间,约20-60秒后可刷新快速关阀列表查看执行结果。"
        })
        setTimeout(() => {
          this.getOpenList();
        }, 20000)
      } else if (this.data.options.param === "2") {
        this.setData({
          showTipDialog: true,
          tipData: "预约开阀命令下发成功,当到达预约时间并且成功开阀后快速关阀列表会显示未关阀记录"
        })
        this.getOpenList();
      }
  },
  /**
@@ -908,7 +922,9 @@
    // 获取当前已选项目和新选择的项目
    const currentProject = getApp().globalData.selectedProject;
    const newProject = this.data.selectedProject;
    const projectName = newProject === 'JYG' ? '嘉峪关项目' : '民勤项目';
    const projectName = newProject === 'JYG' ? '嘉峪关项目' :
                       newProject === 'MQ' ? '民勤项目' :
                       newProject === 'TEST' ? '测试项目' : '未知项目';
    // 检查是否切换了项目(如果当前项目不同于新选择的项目)
    const isProjectChanged = currentProject && currentProject !== newProject;
@@ -955,11 +971,46 @@
      getApp().globalData.baseUrl = baseUrl;
      getApp().globalData.selectedProject = newProject;
      // 根据项目设置对应的tag
      // 根据项目设置对应的tag和clientId
      if (newProject === 'JYG') {
        getApp().globalData.tag = 'ym'; // 嘉峪关项目对应tag为ym
        this.setData({
          userName: "嘉峪关项目"
        });
      } else if (newProject === 'MQ') {
        getApp().globalData.tag = 'mq'; // 民勤项目对应tag为mq
        getApp().globalData.operator = '2025030517095000006';
        getApp().globalData.clientId = '2025030517095000006';
        getApp().globalData.isLoggedIn = true;
        getApp().globalData.sessionId = '2025030517095000006';
        this.setData({
          userName: "民勤项目"
        });
        // 持久化存储民勤项目参数
        storage.setItem('MQ_params', {
          operator: '2025030517095000006',
          clientId: '2025030517095000006',
          isLoggedIn: true,
          sessionId: '2025030517095000006'
        });
      } else if (newProject === 'TEST') {
        getApp().globalData.tag = 'ym'; // 测试项目对应tag为test
        getApp().globalData.operator = '2025032411245000006';
        getApp().globalData.clientId = '2025032411245000006';
        getApp().globalData.isLoggedIn = true;
        getApp().globalData.sessionId = '2025032411245000006';
        getApp().globalData.vcId = '2024122617295800009';
        this.setData({
          userName: "测试项目"
        });
        // 持久化存储测试项目参数
        storage.setItem('TEST_params', {
          operator: '2025032411245000006',
          clientId: '2025032411245000006',
          isLoggedIn: true,
          sessionId: '2025032411245000006',
          vcId: '2024122617295800009'
        });
      }
      console.log('已切换到项目:', projectName, '域名:', baseUrl, 'tag:', getApp().globalData.tag);
@@ -970,22 +1021,16 @@
      // 显示切换成功提示
      wx.showToast({
        title: isProjectChanged ? `已切换至${projectName},请重新登录` : `已选择${projectName}`,
        title: `已选择${projectName}`,
        icon: 'success',
        duration: 2000
      });
      // 如果切换了项目,延迟跳转到登录页面
      if (isProjectChanged) {
        setTimeout(() => {
          console.log('项目已切换,正在跳转到登录页面');
          wx.redirectTo({
            url: `/pages/login/login?project=${newProject}`,
            success: () => console.log('成功跳转到登录页'),
            fail: (err) => console.error('跳转到登录页失败:', err)
          });
        }, 2000);
      }
      // 直接初始化数据
      setTimeout(() => {
        console.log('项目已切换,正在初始化数据');
        this.initData();
      }, 1000);
    }).catch(err => {
      console.error('保存项目选择失败:', err);
      wx.showToast({