From dcfe83a022f2c4aa2a707baa6d5e98a67753bf76 Mon Sep 17 00:00:00 2001
From: zuoxiao <zuoxiao>
Date: 星期二, 18 三月 2025 16:11:12 +0800
Subject: [PATCH] 添加clientId字段到全局状态,优化请求参数处理,更新页面路由,调整取水口和灌溉相关界面,增强用户体验。

---
 pages/login/login.js |  351 ++++++++++++++++++++++++++++++++++++++++++++++++----------
 1 files changed, 290 insertions(+), 61 deletions(-)

diff --git a/pages/login/login.js b/pages/login/login.js
index a4dd503..f7edc39 100644
--- a/pages/login/login.js
+++ b/pages/login/login.js
@@ -17,7 +17,9 @@
     countDown: 60,
     projectName: '鍢夊唱鍏抽」鐩�', // 榛樿椤圭洰鍚嶇О
     selectedProject: 'JYG', // 榛樿椤圭洰浠g爜
-    showErrorDialog: false
+    showErrorDialog: false,
+    fromBack: false,  // 鏍囪鏄惁鏄粠杩斿洖鎸夐挳杩斿洖鐨�
+    manualNavigate: false // 鏍囪鏄惁鏄�氳繃缂栫▼鏂瑰紡瀵艰埅鐨�
   },
 
   /**
@@ -61,8 +63,7 @@
       return;
     }
 
-    // 寮�濮嬪�掕鏃�
-    this.startCountDown();
+
 
     // 鍙戦�侀獙璇佺爜璇锋眰
     this.postCode();
@@ -140,40 +141,14 @@
       title: '鐧诲綍涓�...',
       mask: true
     });
-    this.wsLogin();
-
-
-    // 鍙戦�佺櫥褰曡姹�
-    post('/api/loginByCode', {
-      phone: phone,
-      code: verificationCode,
-      projectCode: this.data.selectedProject
-    }).then(res => {
-      wx.hideLoading();
-
-      if (res.code === 0 && res.data) {
-        // 淇濆瓨鐢ㄦ埛淇℃伅鍜宼oken
-        storage.setUserInfo(res.data);
-        storage.setToken(res.data.token);
-
-        // 璺宠浆鍒伴椤�
-        wx.switchTab({
-          url: '/pages/index/index'
-        });
-      } else {
-        wx.showToast({
-          title: res.msg || '鐧诲綍澶辫触锛岃閲嶈瘯',
-          icon: 'none'
-        });
-      }
-    }).catch(err => {
-      wx.hideLoading();
-      console.error('鐧诲綍澶辫触', err);
-      wx.showToast({
-        title: '缃戠粶寮傚父锛岃閲嶈瘯',
-        icon: 'none'
-      });
+    
+    // 鏍囪涓烘墜鍔ㄥ鑸紝纭繚涓嶄細瑙﹀彂杩斿洖閫昏緫
+    console.log('鐧诲綍鎸夐挳鐐瑰嚮锛岃缃甿anualNavigate=true');
+    this.setData({
+      manualNavigate: true
     });
+    
+    this.wsLogin();
   },
 
   /**
@@ -202,20 +177,63 @@
    * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鍔犺浇
    */
   onLoad: function (options) {
-    // 鑾峰彇閫夋嫨鐨勯」鐩�
-    if (options.project) {
+    console.log('login椤甸潰鍔犺浇锛宱ptions:', options);
+    
+    // 璁剧疆椤甸潰鏁版嵁
+    this.setData({
+      fromBack: false,  // 鏍囪鏄惁鏄粠杩斿洖鎸夐挳杩斿洖鐨�
+      manualNavigate: false // 鏍囪鏄惁鏄�氳繃缂栫▼鏂瑰紡瀵艰埅鐨�
+    });
+    
+    // 鑾峰彇閫夋嫨鐨勯」鐩� - 浼樺厛浣跨敤URL鍙傛暟
+    if (options && options.project) {
+      const project = options.project;
+      const projectName = project === 'JYG' ? '鍢夊唱鍏抽」鐩�' : '姘戝嫟椤圭洰';
+      
+      console.log(`浠嶶RL鍙傛暟鑾峰彇椤圭洰淇℃伅: ${project} (${projectName})`);
+      
       this.setData({
-        selectedProject: options.project,
-        projectName: options.project === 'JYG' ? '鍢夊唱鍏抽」鐩�' : '姘戝嫟椤圭洰'
+        selectedProject: project,
+        projectName: projectName
       });
+      
+      // 鍚屾鏇存柊鍏ㄥ眬椤圭洰璁剧疆
+      if (getApp().globalData) {
+        getApp().globalData.selectedProject = project;
+        
+        // 璁剧疆瀵瑰簲鐨則ag
+        if (project === 'JYG') {
+          getApp().globalData.tag = 'ym';
+        } else if (project === 'MQ') {
+          getApp().globalData.tag = 'mq';
+        }
+        
+        // 鏇存柊 BASEURL
+        try {
+          const { PROJECT_URLS } = require('../../api/config.js');
+          getApp().globalData.baseUrl = PROJECT_URLS[project];
+        } catch (e) {
+          console.error('璁剧疆baseUrl澶辫触:', e);
+        }
+      }
+      
+      // 淇濆瓨椤圭洰閫夋嫨鍒版湰鍦板瓨鍌紝纭繚椤圭洰淇℃伅涓�鑷�
+      storage.setItem('selectedProject', project)
+        .then(() => console.log('鎴愬姛淇濆瓨椤圭洰閫夋嫨鍒板瓨鍌�'))
+        .catch(err => console.error('淇濆瓨椤圭洰閫夋嫨鍒板瓨鍌ㄥけ璐�:', err));
     } else {
-      // 灏濊瘯浠庢湰鍦板瓨鍌ㄨ幏鍙栧凡閫夋嫨鐨勯」鐩�
-      storage.getItem('selectedProject').then(project => {
+      // 浠庢湰鍦板瓨鍌ㄨ幏鍙栧凡閫夋嫨鐨勯」鐩�
+      storage.getItemSafe('selectedProject').then(project => {
         if (project) {
+          const projectName = project === 'JYG' ? '鍢夊唱鍏抽」鐩�' : '姘戝嫟椤圭洰';
+          console.log(`浠庡瓨鍌ㄨ幏鍙栭」鐩俊鎭�: ${project} (${projectName})`);
+          
           this.setData({
             selectedProject: project,
-            projectName: project === 'JYG' ? '鍢夊唱鍏抽」鐩�' : '姘戝嫟椤圭洰'
+            projectName: projectName
           });
+        } else {
+          console.log('鏈壘鍒板凡閫夋嫨鐨勯」鐩紝浣跨敤榛樿椤圭洰');
         }
       }).catch(err => {
         console.error('鑾峰彇宸查�夋嫨椤圭洰澶辫触:', err);
@@ -241,7 +259,21 @@
    * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰闅愯棌
    */
   onHide() {
-
+    // 濡傛灉涓嶆槸閫氳繃缂栫▼鏂瑰紡瀵艰埅锛屽垯鍙兘鏄偣鍑讳簡杩斿洖鎸夐挳
+    // 娉ㄦ剰锛氬湪鏌愪簺鎯呭喌涓嬶紝寰俊鍙兘浼氱洿鎺ヨ皟鐢╫nUnload鑰岃烦杩噊nHide
+    if (!this.data.manualNavigate) {
+      console.log('椤甸潰闅愯棌锛屽彲鑳芥槸鐐瑰嚮浜嗚繑鍥炴寜閽�');
+      this.setData({
+        fromBack: true
+      });
+      
+      // 濡傛灉椤甸潰闅愯棌浣嗘湭鐧诲綍锛岃褰曚竴涓椂闂存埑锛屽府鍔╄瘑鍒槸鍚︽槸杩斿洖鎿嶄綔
+      if (!getApp().globalData.isLoggedIn) {
+        this.hideTimestamp = Date.now();
+      }
+    } else {
+      console.log('椤甸潰闅愯棌锛屾槸閫氳繃浠g爜瀵艰埅鐨�');
+    }
   },
 
   /**
@@ -253,6 +285,103 @@
       clearInterval(this.countDownTimer);
       this.countDownTimer = null;
     }
+    
+    // 璁板綍閫�鍑虹櫥褰曢〉闈㈢殑鎯呭喌
+    console.log('鐧诲綍椤甸潰鍗歌浇锛宖romBack:', this.data.fromBack, 'manualNavigate:', this.data.manualNavigate, '鐧诲綍鐘舵��:', !!getApp().globalData.isLoggedIn);
+    
+    // 濡傛灉鏄櫥褰曟垚鍔燂紝涓嶆墽琛岃繑鍥為�昏緫
+    if (getApp().globalData.isLoggedIn) {
+      console.log('鐢ㄦ埛宸茬櫥褰曪紝鏃犻渶鎵ц杩斿洖閫昏緫');
+      return;
+    }
+    
+    // 妫�鏌ユ槸鍚︽槸閫氳繃缂栫▼鏂瑰紡鏄庣‘璁剧疆浜嗗鑸�
+    // 濡傛灉娌℃湁鏄庣‘璁剧疆锛屽氨鍋囧畾鏄繑鍥炴搷浣�
+    if (!this.data.manualNavigate) {
+      console.log('椤甸潰鍗歌浇鏃舵湭璁剧疆manualNavigate锛屽亣瀹氭槸杩斿洖鎸夐挳鎿嶄綔');
+      
+      // 绔嬪嵆鍐欏叆涓存椂鏍囪锛屼互渚块椤垫娴嬪埌
+      try {
+        // 澶氱鏂瑰紡纭繚鍐欏叆鎴愬姛
+        wx.setStorageSync('_temp_from_login', 'true');
+        console.log('绔嬪嵆鍐欏叆_temp_from_login鏍囪涓簍rue');
+        
+        // 鍒涘缓涓�涓叏灞�瀵硅薄锛屼綔涓哄鐢ㄦ柟妗�
+        if (!getApp().globalData) {
+          getApp().globalData = {};
+        }
+        getApp().globalData._tempFromLogin = true;
+        console.log('鍚屾椂璁剧疆鍏ㄥ眬鍙橀噺_tempFromLogin=true');
+        
+        // 妫�鏌ュ啓鍏ユ槸鍚︽垚鍔�
+        const check = wx.getStorageSync('_temp_from_login');
+        console.log('妫�鏌ヤ复鏃舵爣璁版槸鍚﹀啓鍏ユ垚鍔�:', check);
+      } catch (e) {
+        console.error('鍐欏叆鏍囪澶辫触:', e);
+        // 澶囩敤鏂瑰紡鍐欏叆
+        wx.setStorage({
+          key: '_temp_from_login',
+          data: 'true'
+        });
+      }
+      
+      // 灏濊瘯浣跨敤wx.navigateBack杩斿洖涓婁竴椤碉紙濡傛灉鍙锛�
+      const pages = getCurrentPages();
+      if (pages.length > 1) {
+        console.log('妫�娴嬪埌鏈変笂涓�椤碉紝浣跨敤navigateBack杩斿洖');
+        wx.navigateBack({
+          delta: 1,
+          success: () => console.log('navigateBack鎴愬姛'),
+          fail: (err) => {
+            console.error('navigateBack澶辫触:', err);
+            // 濡傛灉navigateBack澶辫触锛屽皾璇時eLaunch
+            this.backupReturnToHome();
+          }
+        });
+      } else {
+        console.log('鏃犱笂涓�椤碉紝浣跨敤澶囩敤杩斿洖鏂瑰紡');
+        // 娌℃湁涓婁竴椤碉紝浣跨敤澶囩敤鏂规硶
+        this.backupReturnToHome();
+      }
+    } else {
+      console.log('閫氳繃缂栫▼鏂瑰紡绂诲紑鐧诲綍椤甸潰');
+    }
+  },
+  
+  // 澶囩敤鐨勮繑鍥為椤垫柟娉�
+  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);
+          // 鏈�鍚庣殑澶囩敤鏂规锛氫娇鐢╮edirectTo
+          setTimeout(() => {
+            console.log('寤惰繜浣跨敤redirectTo灏濊瘯杩斿洖棣栭〉');
+            wx.redirectTo({
+              url: '/pages/home/home?fromLogin=true',
+              success: () => console.log('redirectTo鎴愬姛杩斿洖棣栭〉'),
+              fail: (err) => console.error('鎵�鏈夎繑鍥炴柟娉曢兘澶辫触:', err)
+            });
+          }, 100);
+        }
+      });
+    };
+    
+    // 鍏堝皾璇曚娇鐢╯witchTab锛堟煇浜涚増鏈彲鑳藉皢棣栭〉璁剧疆涓簍abBar锛�
+    wx.switchTab({
+      url: '/pages/home/home',
+      success: () => console.log('switchTab鎴愬姛杩斿洖棣栭〉'),
+      fail: (err) => {
+        console.log('switchTab澶辫触锛堝彲鑳介椤典笉鍦╰abBar涓級:', err);
+        useReLaunch();
+      }
+    });
   },
 
   /**
@@ -290,8 +419,8 @@
         this.setData({
           codeSent: true,
         });
-        // 鍚姩鍊掕鏃�
-        this.startCountdown();
+    // 寮�濮嬪�掕鏃�
+    this.startCountDown();
       })
       .catch((error) => {
         wx.showToast({
@@ -302,20 +431,39 @@
       });
   },
   wsLogin() {
+    // 鏍囪涓烘墜鍔ㄥ鑸�
+    console.log('wsLogin璋冪敤锛岃缃甿anualNavigate=true');
+    this.setData({
+      manualNavigate: true
+    });
+    
     wx.login({
       success: res => {
         if (res.code) {
-          console.log('鐧诲綍鎴愬姛锛岃幏鍙栧埌鐨刢ode:', res.code);
+          console.log('寰俊鐧诲綍鎴愬姛锛岃幏鍙栧埌鐨刢ode:', res.code);
           // 鍙戦�� res.code 鍒板悗鍙版湇鍔″櫒鎹㈠彇 openId, sessionKey, unionId
           this.verify(res.code)
         } else {
-          console.log('鐧诲綍澶辫触锛�' + res.errMsg);
+          console.log('寰俊鐧诲綍澶辫触锛�' + res.errMsg);
+          // 鐧诲綍澶辫触鏃堕噸缃姸鎬�
+          this.setData({
+            manualNavigate: false
+          });
         }
+      },
+      fail: err => {
+        console.error('寰俊鐧诲綍API璋冪敤澶辫触:', err);
+        // 鐧诲綍澶辫触锛岄噸缃鑸爣璁�
+        this.setData({
+          manualNavigate: false
+        });
       }
     });
   },
   //鐢ㄦ埛缁戝畾
   verify(wxCode) {
+    console.log('verify璋冪敤锛岀‘璁anualNavigate=', this.data.manualNavigate);
+    
     const params = {
       url: 'wx/client/verify',
       data: {
@@ -324,34 +472,115 @@
         code: wxCode
       }
     };
+    
     post(params)
       .then((data) => {
         wx.hideLoading();
-        getApp().globalData.sessionId = String(data.content.sessionId)
-        storage.setItem("sessionId", String(data.content.sessionId))
-        getApp().globalData.clientId = String(data.content.clientId)
-        storage.setItem("clientId", String(data.content.clientId))
-        this.bindSuccess();
+        
+        console.log('楠岃瘉鎴愬姛锛屽噯澶囦繚瀛樼敤鎴锋暟鎹�');
+        
+        // 纭繚鍏ㄥ眬瀵硅薄宸插垵濮嬪寲
+        if (!getApp().globalData) {
+          getApp().globalData = {};
+        }
+        
+        // 淇濆瓨浼氳瘽ID鍜屽鎴风ID
+        getApp().globalData.sessionId = String(data.content.sessionId);
+        storage.setItem("sessionId", String(data.content.sessionId));
+        getApp().globalData.clientId = String(data.content.clientId);
+        storage.setItem("clientId", String(data.content.clientId));
+        
+        // 璁剧疆褰撳墠椤圭洰鐨則ag
+        const tag = this.data.selectedProject === 'JYG' ? 'ym' : 'mq';
+        getApp().globalData.tag = tag;
+        
+        // 淇濆瓨鐢ㄦ埛淇℃伅
+        const userInfo = {
+          sessionId: String(data.content.sessionId),
+          clientId: String(data.content.clientId),
+          phone: this.data.phone,
+          token: data.content.token || '',
+          project: this.data.selectedProject,
+          tag: tag
+        };
+        
+        // 淇濆瓨鍒板叏灞�鍙橀噺
+        getApp().globalData.userInfo = userInfo;
+        getApp().globalData.isLoggedIn = true;
+        
+        // 淇濆瓨鍒版湰鍦板瓨鍌�
+        storage.setItem("userInfo", JSON.stringify(userInfo))
+          .then(() => {
+            console.log('鐢ㄦ埛淇℃伅淇濆瓨鎴愬姛');
+            return storage.setItem("isLoggedIn", "true");
+          })
+          .then(() => {
+            // 淇濆瓨userData淇℃伅锛屽寘鍚玸essionId鍜宼ag
+            const userData = JSON.stringify({
+              sessionId: String(data.content.sessionId),
+              tag: tag
+            });
+            return storage.setItem("userData", userData);
+          })
+          .then(() => {
+            console.log('鐧诲綍鐘舵�佸拰椤圭洰淇℃伅淇濆瓨鎴愬姛');
+            this.bindSuccess();
+          })
+          .catch(err => {
+            console.warn('淇濆瓨鐢ㄦ埛淇℃伅杩囩▼涓嚭閿欙紝浣嗕笉褰卞搷缁х画鎿嶄綔:', err);
+            this.bindSuccess();
+          });
       })
       .catch((error) => {
         wx.hideLoading();
+        console.error('楠岃瘉璇锋眰澶辫触:', error);
+        
+        // 楠岃瘉澶辫触锛岄渶瑕侀噸缃鑸爣璁�
+        console.log('楠岃瘉澶辫触锛岄噸缃甿anualNavigate=false');
+        this.setData({
+          manualNavigate: false
+        });
+        
         wx.showToast({
-          title: error.msg,
+          title: error.msg || '楠岃瘉澶辫触',
           icon: 'error',
           duration: 3000,
         });
-        console.error('Failed to add item:', error);
       });
   },
   bindSuccess: function () {
-    if (!this.data.isButtonEnabled) return;
+    // 璁剧疆鏍囪锛岃〃绀洪�氳繃缂栫▼鏂瑰紡瀵艰埅
+    console.log('缁戝畾鎴愬姛锛屾渶缁堢‘璁anualNavigate=true');
+    this.setData({
+      manualNavigate: true,
+      fromBack: false // 纭繚涓嶄細琚瘑鍒负杩斿洖鎿嶄綔
+    });
+    
+    // 璁剧疆鍏ㄥ眬鐧诲綍鐘舵��
+    getApp().globalData.isLoggedIn = true;
+    
+    // 纭繚娓呴櫎涓存椂鏍囪
+    try {
+      wx.removeStorageSync('_temp_from_login');
+    } catch(e) {
+      console.warn('娓呴櫎涓存椂鏍囪澶辫触', e);
+    }
+    
     wx.showToast({
       title: '缁戝畾鎴愬姛',
-      icon: 'success'
-    });
-    // 璺宠浆鍒� TabBar 椤甸潰
-    wx.redirectTo({
-      url: '/pages/home/home' // 杩欓噷濉啓浣犳兂瑕佽烦杞殑 TabBar 椤甸潰璺緞
+      icon: 'success',
+      duration: 1500,
+      mask: true,
+      success: () => {
+        // 寤惰繜璺宠浆锛岀‘淇漈oast鏄剧ず瀹屾垚
+        setTimeout(() => {
+          console.log('鐧诲綍鎴愬姛锛屽噯澶囪烦杞埌棣栭〉');
+          // 璺宠浆鍒伴椤碉紝浣跨敤reLaunch鑰屼笉鏄痳edirectTo
+          wx.reLaunch({
+            url: '/pages/home/home'
+          });
+        }, 1500);
+      }
     });
   },
 })
\ No newline at end of file

--
Gitblit v1.8.0