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