管灌系统农户端微信小程序(嘉峪关应用)
pages/login/login.js
@@ -287,11 +287,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 {
@@ -438,7 +440,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);
          })
@@ -488,12 +494,54 @@
      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);
      }
    });
  },