From 5db0b5a4ae6124624d197bcebff28b3a9ed46400 Mon Sep 17 00:00:00 2001
From: zuoxiao <zuoxiao>
Date: 星期一, 12 五月 2025 16:48:53 +0800
Subject: [PATCH] 添加账号密码登录页面的跳转逻辑,优化登录方式选择;更新项目配置以支持不同登录方式,提升用户体验。

---
 pages/home/home.js |  516 +++++++++++++++++++++++++++++++++++++++++++--------------
 1 files changed, 387 insertions(+), 129 deletions(-)

diff --git a/pages/home/home.js b/pages/home/home.js
index a997e2b..a7d4ac1 100644
--- a/pages/home/home.js
+++ b/pages/home/home.js
@@ -39,6 +39,7 @@
     lastIntakeName: "",
     showProjectDialog: false,
     selectedProject: '',
+    tempSelectedProject: '', // 娣诲姞涓存椂閫夋嫨鍙橀噺锛岀敤浜庝繚瀛樼敤鎴峰湪瀵硅瘽妗嗕腑閫夋嫨浣嗗皻鏈‘璁ょ殑椤圭洰
     avatarTapCount: 0,
     isFromLogin: false,
     showTipDialog: '',
@@ -49,17 +50,45 @@
 
   openValve: function (e) {
     const app = getApp();
-    if (app.globalData.isLoggedIn) {
-      wx.navigateTo({
-        url: '/pages/waterIntake/waterIntake',
-      })
-    } else {
-      wx.showToast({
-        title: '璇峰厛鐧诲綍',
-        icon: 'error'
-      })
+    // 妫�鏌ュ綋鍓嶉」鐩槸鍚﹂渶瑕佺櫥褰�
+    const currentProject = app.globalData.selectedProject;
+    if (currentProject && PROJECT_CONFIG[currentProject] && PROJECT_CONFIG[currentProject].needLogin) {
+      // 闇�瑕佺櫥褰曠殑椤圭洰锛屾鏌ユ槸鍚﹀凡鐧诲綍
+      if (!app.globalData.isLoggedIn) {
+        // 鏈櫥褰曪紝鏄剧ず鎻愮ず骞堕樆姝㈡搷浣�
+        wx.showToast({
+          title: '璇峰厛鐧诲綍',
+          icon: 'error',
+          duration: 2000
+        });
+        
+        // 鑾峰彇椤圭洰閰嶇疆
+        const projectConfig = PROJECT_CONFIG[currentProject];
+        if (projectConfig) {
+          // 璇㈤棶鐢ㄦ埛鏄惁鍓嶅線鐧诲綍
+          wx.showModal({
+            title: '鎻愮ず',
+            content: '鎮ㄩ渶瑕佺櫥褰曞悗鎵嶈兘浣跨敤寮�闃�鍔熻兘锛屾槸鍚︾珛鍗崇櫥褰曪紵',
+            confirmText: '鍓嶅線鐧诲綍',
+            cancelText: '鍙栨秷',
+            success: (res) => {
+              if (res.confirm) {
+                // 鐢ㄦ埛鐐瑰嚮纭锛岀洿鎺ヨ皟鐢╳xLogin鏂规硶
+                this.wxLogin();
+              }
+            }
+          });
+        }
+        return;
+      }
     }
+    
+    // 宸茬櫥褰曟垨涓嶉渶瑕佺櫥褰曠殑椤圭洰锛屾墽琛屽紑闃�鎿嶄綔
+    wx.navigateTo({
+      url: '/pages/waterIntake/waterIntake',
+    })
   },
+
   // calculateScrollViewHeight: function () {
   //     wx.createSelectorQuery().selectAll('.list-item').boundingClientRect((rects) => {
   //         let totalHeight = rects.reduce((sum, rect) => sum + rect.height, 0);
@@ -319,9 +348,34 @@
       });
     }
 
+    // 灏濊瘯鑾峰彇eventChannel锛岀敤浜庣洃鍚櫥褰曢〉闈㈠彂鍥炵殑娑堟伅
+    try {
+      const eventChannel = currentPage.getOpenerEventChannel();
+      if (eventChannel && eventChannel.on) {
+        eventChannel.on('fromLogin', (data) => {
+          console.log('onShow: 鎺ユ敹鍒扮櫥褰曢〉闈㈣繑鍥炵殑娑堟伅', data);
+          if (data && data.fromLogin) {
+            fromLogin = true;
+            this.setData({
+              isFromLogin: true
+            });
+            
+            // 鐧诲綍鎴愬姛鍚庡埛鏂版暟鎹�
+            console.log('鐧诲綍鎴愬姛鍚庡埛鏂版暟鎹�');
+            this.initData();
+          }
+        });
+      }
+    } catch (e) {
+      console.error('鑾峰彇eventChannel澶辫触:', e);
+    }
+
     // 鍒濆鍖栧鐞�
     if (fromLogin || this.data.isFromLogin) {
       console.log('onShow: 浠庣櫥褰曢〉杩斿洖锛屼笉杩涜鐧诲綍妫�鏌�');
+      
+      // 濡傛灉鏄粠鐧诲綍椤佃繑鍥烇紝閲嶆柊鍔犺浇鏁版嵁
+      this.initData();
     } else {
       console.log('onShow: 姝e父鏄剧ず椤甸潰');
       // 寤惰繜妫�鏌ョ櫥褰曠姸鎬侊紝纭繚鑳芥纭瘑鍒复鏃舵爣璁�
@@ -398,16 +452,43 @@
   },
   openValveList() {
     const app = getApp();
-    if (app.globalData.isLoggedIn) {
-      wx.navigateTo({
-        url: '/pages/valveList/valveList',
-      })
-    } else {
-      wx.showToast({
-        title: '璇峰厛鐧诲綍',
-        icon: 'error'
-      })
+    // 妫�鏌ュ綋鍓嶉」鐩槸鍚﹂渶瑕佺櫥褰�
+    const currentProject = app.globalData.selectedProject;
+    if (currentProject && PROJECT_CONFIG[currentProject] && PROJECT_CONFIG[currentProject].needLogin) {
+      // 闇�瑕佺櫥褰曠殑椤圭洰锛屾鏌ユ槸鍚﹀凡鐧诲綍
+      if (!app.globalData.isLoggedIn) {
+        // 鏈櫥褰曪紝鏄剧ず鎻愮ず骞堕樆姝㈡搷浣�
+        wx.showToast({
+          title: '璇峰厛鐧诲綍',
+          icon: 'error',
+          duration: 2000
+        });
+        
+        // 鑾峰彇椤圭洰閰嶇疆
+        const projectConfig = PROJECT_CONFIG[currentProject];
+        if (projectConfig) {
+          // 璇㈤棶鐢ㄦ埛鏄惁鍓嶅線鐧诲綍
+          wx.showModal({
+            title: '鎻愮ず',
+            content: '鎮ㄩ渶瑕佺櫥褰曞悗鎵嶈兘鏌ョ湅寮�鍏抽榾璁板綍锛屾槸鍚︾珛鍗崇櫥褰曪紵',
+            confirmText: '鍓嶅線鐧诲綍',
+            cancelText: '鍙栨秷',
+            success: (res) => {
+              if (res.confirm) {
+                // 鐢ㄦ埛鐐瑰嚮纭锛岀洿鎺ヨ皟鐢╳xLogin鏂规硶
+                this.wxLogin();
+              }
+            }
+          });
+        }
+        return;
+      }
     }
+    
+    // 宸茬櫥褰曟垨涓嶉渶瑕佺櫥褰曠殑椤圭洰锛屾墽琛屾煡鐪嬭褰曟搷浣�
+    wx.navigateTo({
+      url: '/pages/valveList/valveList',
+    })
   },
   feedBack() {
     wx.showToast({
@@ -461,18 +542,45 @@
       });
     }
   },
-  //杞亴
   irrigation() {
-    if (getApp().globalData.isLoggedIn) {
-      wx.navigateTo({
-        url: '/pages/irrigation/irrigation',
-      })
-    } else {
-      wx.showToast({
-        title: '璇峰厛鐧诲綍',
-        icon: 'error'
-      })
+    const app = getApp();
+    // 妫�鏌ュ綋鍓嶉」鐩槸鍚﹂渶瑕佺櫥褰�
+    const currentProject = app.globalData.selectedProject;
+    if (currentProject && PROJECT_CONFIG[currentProject] && PROJECT_CONFIG[currentProject].needLogin) {
+      // 闇�瑕佺櫥褰曠殑椤圭洰锛屾鏌ユ槸鍚﹀凡鐧诲綍
+      if (!app.globalData.isLoggedIn) {
+        // 鏈櫥褰曪紝鏄剧ず鎻愮ず骞堕樆姝㈡搷浣�
+        wx.showToast({
+          title: '璇峰厛鐧诲綍',
+          icon: 'error',
+          duration: 2000
+        });
+        
+        // 鑾峰彇椤圭洰閰嶇疆
+        const projectConfig = PROJECT_CONFIG[currentProject];
+        if (projectConfig) {
+          // 璇㈤棶鐢ㄦ埛鏄惁鍓嶅線鐧诲綍
+          wx.showModal({
+            title: '鎻愮ず',
+            content: '鎮ㄩ渶瑕佺櫥褰曞悗鎵嶈兘浣跨敤杞亴鍔熻兘锛屾槸鍚︾珛鍗崇櫥褰曪紵',
+            confirmText: '鍓嶅線鐧诲綍',
+            cancelText: '鍙栨秷',
+            success: (res) => {
+              if (res.confirm) {
+                // 鐢ㄦ埛鐐瑰嚮纭锛岀洿鎺ヨ皟鐢╳xLogin鏂规硶
+                this.wxLogin();
+              }
+            }
+          });
+        }
+        return;
+      }
     }
+    
+    // 宸茬櫥褰曟垨涓嶉渶瑕佺櫥褰曠殑椤圭洰锛屾墽琛岃疆鐏屾搷浣�
+    wx.navigateTo({
+      url: '/pages/irrigation/irrigation',
+    })
   },
   handleChange(e) {
     const item = e.currentTarget.dataset.item;
@@ -656,12 +764,6 @@
   },
   //鏍规嵁session鑾峰彇鍐滄埛淇℃伅
   getUserDataBySession() {
-    // 鍏堟鏌ユ槸鍚︿粠鐧诲綍椤佃繑鍥�
-    if (this.getFromLogin()) {
-      console.log('getUserDataBySession: 妫�娴嬪埌浠庣櫥褰曢〉杩斿洖鐨勬爣璁帮紝涓嶆墽琛孉PI璇锋眰');
-      return;
-    }
-
     const app = getApp();
 
     // 妫�鏌ユ槸鍚︽湁sessionId
@@ -727,6 +829,41 @@
    * 鎵爜寮�闃�
    */
   scenCode() {
+    const app = getApp();
+    // 妫�鏌ュ綋鍓嶉」鐩槸鍚﹂渶瑕佺櫥褰�
+    const currentProject = app.globalData.selectedProject;
+    if (currentProject && PROJECT_CONFIG[currentProject] && PROJECT_CONFIG[currentProject].needLogin) {
+      // 闇�瑕佺櫥褰曠殑椤圭洰锛屾鏌ユ槸鍚﹀凡鐧诲綍
+      if (!app.globalData.isLoggedIn) {
+        // 鏈櫥褰曪紝鏄剧ず鎻愮ず骞堕樆姝㈡壂鐮�
+        wx.showToast({
+          title: '璇峰厛鐧诲綍',
+          icon: 'error',
+          duration: 2000
+        });
+        
+        // 鑾峰彇椤圭洰閰嶇疆
+        const projectConfig = PROJECT_CONFIG[currentProject];
+        if (projectConfig) {
+          // 璇㈤棶鐢ㄦ埛鏄惁鍓嶅線鐧诲綍
+          wx.showModal({
+            title: '鎻愮ず',
+            content: '鎮ㄩ渶瑕佺櫥褰曞悗鎵嶈兘浣跨敤鎵爜寮�闃�鍔熻兘锛屾槸鍚︾珛鍗崇櫥褰曪紵',
+            confirmText: '鍓嶅線鐧诲綍',
+            cancelText: '鍙栨秷',
+            success: (res) => {
+              if (res.confirm) {
+                // 鐢ㄦ埛鐐瑰嚮纭锛岀洿鎺ヨ皟鐢╳xLogin鏂规硶
+                this.wxLogin();
+              }
+            }
+          });
+        }
+        return;
+      }
+    }
+    
+    // 宸茬櫥褰曟垨涓嶉渶瑕佺櫥褰曠殑椤圭洰锛屾墽琛屾壂鐮佹搷浣�
     const that = this;
     wx.scanCode({
       success(res) {
@@ -825,35 +962,67 @@
 
     // 棣栧厛妫�鏌ユ槸鍚︿粠鐧诲綍椤佃繑鍥�
     if (this.getFromLogin()) {
-      console.log('initData: 妫�娴嬪埌浠庣櫥褰曢〉杩斿洖鐨勬爣璁帮紝浠呰幏鍙栧熀鏈暟鎹�');
+      console.log('initData: 妫�娴嬪埌浠庣櫥褰曢〉杩斿洖鐨勬爣璁帮紝鎵ц瀹屾暣鐨勭敤鎴锋暟鎹幏鍙�');
 
-      // 鍗充娇浠庣櫥褰曢〉杩斿洖锛屼篃灏濊瘯鑾峰彇寮�闃�鍒楄〃浠ユ樉绀哄熀鏈琔I
-      // 浣嗗厛妫�鏌ユ槸鍚︽湁瀹㈡埛绔疘D鍙敤
-      if (!app.globalData.clientId) {
-        console.log('initData: 浠庣櫥褰曢〉杩斿洖涓旀棤clientId锛屽皾璇曚粠瀛樺偍鎭㈠');
-        // 灏濊瘯浠庡瓨鍌ㄦ仮澶峜lientId
-        storage.getItemSafe('clientId')
-          .then(clientId => {
-            if (clientId) {
-              console.log('initData: 浠庡瓨鍌ㄦ仮澶峜lientId鎴愬姛:', clientId);
-              app.globalData.clientId = clientId;
-              this.getOpenList();
-            } else {
-              console.log('initData: 鏃犳硶鎭㈠clientId锛屾樉绀虹┖鍒楄〃');
-              this.setData({
-                listData: []
-              });
-            }
-          })
-          .catch(err => {
-            console.error('initData: 鎭㈠clientId澶辫触:', err);
-            this.setData({
-              listData: []
-            });
-          });
-      } else {
+      // 妫�鏌ユ槸鍚︽湁sessionId鍜宑lientId锛屼紭鍏堜娇鐢ㄥ叏灞�鍙橀噺
+      if (app.globalData.sessionId && app.globalData.clientId) {
+        console.log('initData: 鍏ㄥ眬鍙橀噺涓湁鐧诲綍淇℃伅锛岀洿鎺ヨ幏鍙栫敤鎴锋暟鎹拰寮�闃�鍒楄〃');
+        this.getUserDataBySession();
         this.getOpenList();
+        return;
       }
+
+      // 濡傛灉娌℃湁鍏ㄥ眬鍙橀噺锛屽皾璇曚粠鏈湴瀛樺偍涓仮澶�
+      Promise.all([
+        storage.getItemSafe('userData'),
+        storage.getItemSafe('sessionId'),
+        storage.getItemSafe('clientId')
+      ]).then(([userData, sessionId, clientId]) => {
+        if (userData) {
+          try {
+            // 瑙f瀽userData骞惰缃叏灞�鍙橀噺
+            let jsonObj = JSON.parse(userData);
+            app.globalData.sessionId = jsonObj.sessionId;
+            app.globalData.clientId = jsonObj.clientId || clientId;
+            app.globalData.tag = jsonObj.tag;
+            app.globalData.isLoggedIn = true;
+            
+            // 鐩存帴浠巙serData璁剧疆鐢ㄦ埛淇℃伅
+            if (jsonObj.clientName && jsonObj.phone) {
+              this.setData({
+                userName: jsonObj.clientName,
+                userPhone: this.maskPhoneNumber(jsonObj.phone)
+              });
+            } else {
+              // 濡傛灉userData涓病鏈夌敤鎴蜂俊鎭紝璋冪敤鎺ュ彛鑾峰彇
+              this.getUserDataBySession();
+            }
+            
+            console.log("userData宸插姞杞�:", userData);
+          } catch (e) {
+            console.error('userData瑙f瀽澶辫触:', e);
+            if (sessionId && clientId) {
+              app.globalData.sessionId = sessionId;
+              app.globalData.clientId = clientId;
+              app.globalData.isLoggedIn = true;
+              this.getUserDataBySession();
+            }
+          }
+        } else if (sessionId && clientId) {
+          // 濡傛灉娌℃湁userData浣嗘湁session鍜宑lient ID
+          app.globalData.sessionId = sessionId;
+          app.globalData.clientId = clientId;
+          app.globalData.isLoggedIn = true;
+          this.getUserDataBySession();
+        }
+        
+        // 鏃犺濡備綍閮藉皾璇曡幏鍙栧紑闃�鍒楄〃
+        this.getOpenList();
+      }).catch(err => {
+        console.error('鎭㈠鐧诲綍鐘舵�佸け璐�:', err);
+        this.getOpenList();
+      });
+      
       return;
     }
 
@@ -984,7 +1153,8 @@
     if (this.data.avatarTapCount >= 5) {
       this.setData({
         showProjectDialog: true,
-        avatarTapCount: 0
+        avatarTapCount: 0,
+        tempSelectedProject: this.data.selectedProject // 鍒濆鍖栦复鏃堕�夋嫨涓哄綋鍓嶉�夋嫨
       });
     }
   },
@@ -996,23 +1166,28 @@
       return;
     }
     this.setData({
-      showProjectDialog: e.detail.visible
+      showProjectDialog: e.detail.visible,
+      // 褰撴樉绀哄璇濇鏃讹紝鍒濆鍖栦复鏃堕�夋嫨涓哄綋鍓嶉�夋嫨
+      tempSelectedProject: e.detail.visible ? this.data.selectedProject : ''
     });
   },
 
   // 澶勭悊椤圭洰閫夋嫨鍙樺寲
   onProjectChange(event) {
     console.log('閫夋嫨鐨勯」鐩細', event.detail.value);
+    // 涓嶇珛鍗宠缃埌state锛岃�屾槸瀛樺偍鍒颁复鏃跺彉閲忎腑
     this.setData({
-      selectedProject: event.detail.value
+      tempSelectedProject: event.detail.value
     });
   },
 
   // 澶勭悊椤圭洰閫夋嫨纭
   handleProjectConfirm() {
-    console.log('寮�濮嬪鐞嗛」鐩�夋嫨纭', this.data.selectedProject, this.data.projectList);
+    // 浠庝复鏃跺彉閲忚幏鍙栭�夋嫨鐨勯」鐩�
+    const selectedProject = this.data.tempSelectedProject || this.data.selectedProject;
+    console.log('寮�濮嬪鐞嗛」鐩�夋嫨纭', selectedProject, this.data.projectList);
 
-    if (!this.data.selectedProject) {
+    if (!selectedProject) {
       wx.showToast({
         title: '璇烽�夋嫨椤圭洰',
         icon: 'none'
@@ -1022,7 +1197,7 @@
 
     // 鑾峰彇褰撳墠宸查�夐」鐩拰鏂伴�夋嫨鐨勯」鐩�
     const currentProject = getApp().globalData.selectedProject;
-    const newProject = this.data.selectedProject;
+    const newProject = selectedProject;
     console.log('褰撳墠椤圭洰:', currentProject, '鏂伴�夋嫨椤圭洰:', newProject);
     console.log('PROJECT_CONFIG 鍐呭:', PROJECT_CONFIG);
 
@@ -1052,11 +1227,19 @@
       cancelText: '鍙栨秷',
       success: (res) => {
         if (res.confirm) {
+          // 鐢ㄦ埛纭閫夋嫨鍚庯紝鏇存柊鐘舵�佸苟缁х画澶勭悊
+          this.setData({
+            selectedProject: newProject
+          });
           // 鐢ㄦ埛纭閫夋嫨锛岀户缁鐞�
           this.processProjectSelection(currentProject, newProject, projectConfig, isProjectChanged);
         } else {
           // 鐢ㄦ埛鍙栨秷锛屼笉杩涜浠讳綍鎿嶄綔
           console.log('鐢ㄦ埛鍙栨秷浜嗛」鐩�夋嫨');
+          // 鎭㈠涔嬪墠鐨勯�夋嫨鐘舵��
+          this.setData({
+            tempSelectedProject: this.data.selectedProject
+          });
         }
       }
     });
@@ -1243,7 +1426,7 @@
     }
 
     // 濡傛灉褰撳墠宸插湪鐧诲綍椤碉紝涓嶅啀璺宠浆
-    if (currentRoute === 'pages/login/login') {
+    if (currentRoute === 'pages/login/login' || currentRoute === 'pages/accountLogin/accountLogin') {
       console.log('褰撳墠宸插湪鐧诲綍椤碉紝涓嶅啀璺宠浆');
       return;
     }
@@ -1298,11 +1481,26 @@
             wx.setStorageSync('_attempted_login_redirect', 'true');
           } catch (e) {}
 
-          // wx.navigateTo({
-          //   url: `/pages/login/login?project=${this.data.selectedProject}`,
-          //   success: () => console.log('鎴愬姛璺宠浆鍒扮櫥褰曢〉'),
-          //   fail: (err) => console.error('璺宠浆鍒扮櫥褰曢〉澶辫触:', err)
-          // });
+          // 鏍规嵁椤圭洰閰嶇疆鐨刲oginType鍐冲畾璺宠浆鍒板摢涓櫥褰曢〉闈�
+          // 姝ゅ涓嶅仛璺宠浆锛屾敞閲婃帀鍘熸湁浠g爜
+          // const projectInfo = PROJECT_CONFIG[currentProject];
+          // const loginType = projectInfo?.loginType || 'code'; // 榛樿浣跨敤楠岃瘉鐮佺櫥褰�
+          
+          // if (loginType === 'account') {
+          //   // 璐﹀彿瀵嗙爜鐧诲綍
+          //   wx.navigateTo({
+          //     url: `/pages/accountLogin/accountLogin?project=${currentProject}`,
+          //     success: () => console.log('鎴愬姛璺宠浆鍒拌处鍙峰瘑鐮佺櫥褰曢〉'),
+          //     fail: (err) => console.error('璺宠浆鍒拌处鍙峰瘑鐮佺櫥褰曢〉澶辫触:', err)
+          //   });
+          // } else {
+          //   // 楠岃瘉鐮佺櫥褰�
+          //   wx.navigateTo({
+          //     url: `/pages/login/login?project=${currentProject}`,
+          //     success: () => console.log('鎴愬姛璺宠浆鍒伴獙璇佺爜鐧诲綍椤�'),
+          //     fail: (err) => console.error('璺宠浆鍒伴獙璇佺爜鐧诲綍椤靛け璐�:', err)
+          //   });
+          // }
         }
       })
       .catch(err => {
@@ -1325,12 +1523,26 @@
           return;
         }
 
-        // 鍑洪敊鏃朵篃璺宠浆鍒扮櫥褰曢〉
-        // wx.navigateTo({
-        //   url: `/pages/login/login?project=${this.data.selectedProject}`,
-        //   success: () => console.log('閿欒鍚庢垚鍔熻烦杞埌鐧诲綍椤�'),
-        //   fail: (err) => console.error('閿欒鍚庤烦杞埌鐧诲綍椤靛け璐�:', err)
-        // });
+        // 鍑洪敊鏃朵篃璺宠浆鍒扮櫥褰曢〉锛屾牴鎹甽oginType鍐冲畾璺宠浆鐩爣
+        // 姝ゅ涓嶅仛璺宠浆锛屾敞閲婃帀鍘熸湁浠g爜
+        // const projectInfo = PROJECT_CONFIG[currentProject];
+        // const loginType = projectInfo?.loginType || 'code'; // 榛樿浣跨敤楠岃瘉鐮佺櫥褰�
+        
+        // if (loginType === 'account') {
+        //   // 璐﹀彿瀵嗙爜鐧诲綍
+        //   wx.navigateTo({
+        //     url: `/pages/accountLogin/accountLogin?project=${currentProject}`,
+        //     success: () => console.log('閿欒鍚庢垚鍔熻烦杞埌璐﹀彿瀵嗙爜鐧诲綍椤�'),
+        //     fail: (err) => console.error('閿欒鍚庤烦杞埌璐﹀彿瀵嗙爜鐧诲綍椤靛け璐�:', err)
+        //   });
+        // } else {
+        //   // 楠岃瘉鐮佺櫥褰�
+        //   wx.navigateTo({
+        //     url: `/pages/login/login?project=${currentProject}`,
+        //     success: () => console.log('閿欒鍚庢垚鍔熻烦杞埌楠岃瘉鐮佺櫥褰曢〉'),
+        //     fail: (err) => console.error('閿欒鍚庤烦杞埌楠岃瘉鐮佺櫥褰曢〉澶辫触:', err)
+        //   });
+        // }
       });
   },
 
@@ -1437,11 +1649,21 @@
               wx.hideLoading();
               if (response.code === "0001") {
                 if (response.content.client.clientId === "") {
-                  // 鏈粦瀹氳处鍙凤紝璺宠浆鍒扮櫥褰曢〉闈㈠苟浼犻�掑綋鍓嶉」鐩俊鎭�
+                  // 鏈粦瀹氳处鍙凤紝鏍规嵁椤圭洰閰嶇疆鐨刲oginType璺宠浆鍒扮浉搴旂殑鐧诲綍椤甸潰
                   const projectInfo = PROJECT_CONFIG[this.data.selectedProject];
-                  wx.navigateTo({
-                    url: `/pages/login/login?project=${this.data.selectedProject}&projectName=${projectInfo.displayName}`
-                  });
+                  const loginType = projectInfo?.loginType || 'code'; // 榛樿浣跨敤楠岃瘉鐮佺櫥褰�
+                  
+                  if (loginType === 'account') {
+                    // 璐﹀彿瀵嗙爜鐧诲綍
+                    wx.navigateTo({
+                      url: `/pages/accountLogin/accountLogin?project=${this.data.selectedProject}&projectName=${projectInfo.displayName}`
+                    });
+                  } else {
+                    // 楠岃瘉鐮佺櫥褰�
+                    wx.navigateTo({
+                      url: `/pages/login/login?project=${this.data.selectedProject}&projectName=${projectInfo.displayName}`
+                    });
+                  }
                 } else {
                   this.setData({
                     userName: response.content.client.clientName,
@@ -1487,11 +1709,21 @@
 
                 }
               } else if (response.code === "1003") {
-                // 鏈粦瀹氳处鍙凤紝璺宠浆鍒扮櫥褰曢〉闈㈠苟浼犻�掑綋鍓嶉」鐩俊鎭�
+                // 鏈粦瀹氳处鍙凤紝鏍规嵁椤圭洰閰嶇疆鐨刲oginType璺宠浆鍒扮浉搴旂殑鐧诲綍椤甸潰
                 const projectInfo = PROJECT_CONFIG[this.data.selectedProject];
-                wx.navigateTo({
-                  url: `/pages/login/login?project=${this.data.selectedProject}&projectName=${projectInfo.displayName}`
-                });
+                const loginType = projectInfo?.loginType || 'code'; // 榛樿浣跨敤楠岃瘉鐮佺櫥褰�
+                
+                if (loginType === 'account') {
+                  // 璐﹀彿瀵嗙爜鐧诲綍
+                  wx.navigateTo({
+                    url: `/pages/accountLogin/accountLogin?project=${this.data.selectedProject}&projectName=${projectInfo.displayName}`
+                  });
+                } else {
+                  // 楠岃瘉鐮佺櫥褰�
+                  wx.navigateTo({
+                    url: `/pages/login/login?project=${this.data.selectedProject}&projectName=${projectInfo.displayName}`
+                  });
+                }
               } else {
                 wx.showToast({
                   title: '鐧诲綍澶辫触',
@@ -1503,11 +1735,21 @@
               wx.hideLoading();
               console.error('鐧诲綍璇锋眰澶辫触:', error);
               if(error.code==="1003"){
-                // 鏈粦瀹氳处鍙凤紝璺宠浆鍒扮櫥褰曢〉闈㈠苟浼犻�掑綋鍓嶉」鐩俊鎭�
+                // 鏈粦瀹氳处鍙凤紝鏍规嵁椤圭洰閰嶇疆鐨刲oginType璺宠浆鍒扮浉搴旂殑鐧诲綍椤甸潰
                 const projectInfo = PROJECT_CONFIG[this.data.selectedProject];
-                wx.navigateTo({
-                  url: `/pages/login/login?project=${this.data.selectedProject}&projectName=${projectInfo.displayName}`
-                });
+                const loginType = projectInfo?.loginType || 'code'; // 榛樿浣跨敤楠岃瘉鐮佺櫥褰�
+                
+                if (loginType === 'account') {
+                  // 璐﹀彿瀵嗙爜鐧诲綍
+                  wx.navigateTo({
+                    url: `/pages/accountLogin/accountLogin?project=${this.data.selectedProject}&projectName=${projectInfo.displayName}`
+                  });
+                } else {
+                  // 楠岃瘉鐮佺櫥褰�
+                  wx.navigateTo({
+                    url: `/pages/login/login?project=${this.data.selectedProject}&projectName=${projectInfo.displayName}`
+                  });
+                }
               }else{
                 wx.showToast({
                   title: '鐧诲綍澶辫触锛岃閲嶈瘯',
@@ -1749,49 +1991,65 @@
   },
 
   // 鍒囨崲椤圭洰
-  switchProject(e) {
-    const project = e.currentTarget.dataset.project;
-
-    if (config.setBaseUrl(project)) {
-      this.setData({
-        selectedProject: project
-      });
-
-      // 淇濆瓨閫夋嫨鍒版湰鍦板瓨鍌�
-      try {
-        wx.setStorageSync('selectedProject', project);
-      } catch (e) {
-        console.error('淇濆瓨椤圭洰閫夋嫨澶辫触:', e);
-      }
-
-      // 鏇存柊鍏ㄥ眬鍙橀噺
-      const app = getApp();
-      if (app && app.globalData) {
-        app.globalData.selectedProject = project;
-
-        // 鏍规嵁椤圭洰閰嶇疆璁剧疆鐩稿叧鍙傛暟
-        const projectConfig = PROJECT_CONFIG[project];
-        if (projectConfig) {
-          app.globalData.tag = projectConfig.tag;
-          if (!projectConfig.needLogin) {
-            app.globalData.operator = projectConfig.operatorId;
-            app.globalData.clientId = projectConfig.operatorId;
-            app.globalData.isLoggedIn = true;
-            app.globalData.sessionId = projectConfig.operatorId;
-            // 濡傛灉鏈塿cId锛屼篃璁剧疆
-            if (projectConfig.vcId) {
-              app.globalData.vcId = projectConfig.vcId;
-            }
-          }
+  switchProject() {
+    // 鏄剧ず浜屾纭寮圭獥
+    wx.showModal({
+      title: '鍒囨崲椤圭洰',
+      content: '纭畾瑕佸垏鎹㈤」鐩悧锛熷垏鎹㈠悗闇�瑕侀噸鏂扮櫥褰曘��',
+      confirmText: '纭鍒囨崲',
+      confirmColor: '#1890FF',
+      cancelText: '鍙栨秷',
+      success: (res) => {
+        if (res.confirm) {
+          // 鐢ㄦ埛鐐瑰嚮纭锛屾樉绀洪」鐩�夋嫨寮圭獥
+          this.setData({
+            showProjectDialog: true
+          });
         }
       }
+    });
+  },
 
-      // 閲嶆柊鍔犺浇椤甸潰鏁版嵁
-      this.initData();
+  // 娣诲姞鐢ㄦ埛鐐瑰嚮澶村儚鎴栫敤鎴峰悕鐧诲綍鐨勫鐞嗛�昏緫
+  handleUserTap() {
+    const app = getApp();
+    // 濡傛灉宸茬櫥褰曪紝涓嶉渶瑕佽烦杞埌鐧诲綍椤甸潰
+    if (app.globalData.isLoggedIn) {
+      return;
+    }
+
+    // 妫�鏌ュ綋鍓嶉」鐩槸鍚﹂渶瑕佺櫥褰�
+    const currentProject = app.globalData.selectedProject;
+    if (currentProject && PROJECT_CONFIG[currentProject]) {
+      const projectConfig = PROJECT_CONFIG[currentProject];
+      
+      if (!projectConfig.needLogin) {
+        console.log('handleUserTap: 褰撳墠椤圭洰涓嶉渶瑕佺櫥褰�:', currentProject);
+        // 涓嶉渶瑕佺櫥褰曠殑椤圭洰锛屾樉绀洪」鐩悕绉�
+        this.setData({
+          userName: projectConfig.displayName
+        });
+        return;
+      }
+      
+      // 鏍规嵁椤圭洰閰嶇疆鐨刲oginType鍐冲畾璺宠浆鍒板摢涓櫥褰曢〉闈�
+      const loginType = projectConfig.loginType || 'code'; // 榛樿浣跨敤楠岃瘉鐮佺櫥褰�
+      
+      if (loginType === 'account') {
+        // 璐﹀彿瀵嗙爜鐧诲綍
+        wx.navigateTo({
+          url: `/pages/accountLogin/accountLogin?project=${currentProject}&projectName=${projectConfig.displayName}`
+        });
+      } else {
+        // 楠岃瘉鐮佺櫥褰�
+        wx.navigateTo({
+          url: `/pages/login/login?project=${currentProject}&projectName=${projectConfig.displayName}`
+        });
+      }
     } else {
-      wx.showToast({
-        title: '鍒囨崲椤圭洰澶辫触',
-        icon: 'none'
+      // 濡傛灉娌℃湁褰撳墠椤圭洰閰嶇疆锛岄粯璁よ烦杞埌楠岃瘉鐮佺櫥褰�
+      wx.navigateTo({
+        url: '/pages/login/login'
       });
     }
   },

--
Gitblit v1.8.0