From aec1b6ec73897b5e5f3a85f2985447726a399ed0 Mon Sep 17 00:00:00 2001 From: zuoxiao <zuoxiao> Date: 星期六, 19 四月 2025 15:56:48 +0800 Subject: [PATCH] 更新灌溉计划页面,添加灌溉计划列表刷新标记,优化项目选择器和时间选择器的逻辑;更新样式以提升用户体验,确保在切换标签时只加载必要的数据。 --- pages/login/login.js | 522 ++++++++++++++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 474 insertions(+), 48 deletions(-) diff --git a/pages/login/login.js b/pages/login/login.js index a957679..6d237be 100644 --- a/pages/login/login.js +++ b/pages/login/login.js @@ -1,4 +1,8 @@ const app = getApp(); +const storage = require('../../utils/storage.js'); +const { + post +} = require('../../api/request.js'); Page({ @@ -6,79 +10,239 @@ * 椤甸潰鐨勫垵濮嬫暟鎹� */ data: { - mobile: '', - code: '', - codeSent: false, - countdown: 60, + phone: '', + verificationCode: '', + codeText: '鑾峰彇楠岃瘉鐮�', + counting: false, + countDown: 60, + projectName: '鍢夊唱鍏抽」鐩�', // 榛樿椤圭洰鍚嶇О + selectedProject: 'JYG', // 榛樿椤圭洰浠g爜 + showErrorDialog: false, + fromBack: false, // 鏍囪鏄惁鏄粠杩斿洖鎸夐挳杩斿洖鐨� + manualNavigate: false // 鏍囪鏄惁鏄�氳繃缂栫▼鏂瑰紡瀵艰埅鐨� }, - bindMobileInput: function (e) { + /** + * 缁戝畾鎵嬫満鍙疯緭鍏� + */ + bindPhoneInput: function (e) { this.setData({ - mobile: e.detail.value, + phone: e.detail.value }); }, - sendCode: function () { - if (!this.data.mobile) { + + /** + * 缁戝畾楠岃瘉鐮佽緭鍏� + */ + bindCodeInput: function (e) { + this.setData({ + verificationCode: e.detail.value + }); + }, + + /** + * 鍙戦�侀獙璇佺爜 + */ + sendVerificationCode: function () { + const { + phone, + counting + } = this.data; + + // 濡傛灉姝e湪鍊掕鏃讹紝鍒欎笉鍏佽鍐嶆鍙戦�� + if (counting) { + return; + } + + // 楠岃瘉鎵嬫満鍙锋牸寮� + if (!/^1\d{10}$/.test(phone)) { wx.showToast({ - title: '璇疯緭鍏ユ墜鏈哄彿', - icon: 'none', - duration: 2000, + title: '璇疯緭鍏ユ纭殑鎵嬫満鍙�', + icon: 'none' }); return; } - // 鍦ㄨ繖閲屽鐞嗗彂閫侀獙璇佺爜鐨勯�昏緫锛屽彲浠ヨ皟鐢ㄥ悗鍙版帴鍙e疄鐜� - // 浠ヤ笅鏄竴涓畝鍗曠殑绀轰緥锛屼粎浣滃弬鑰� - wx.showToast({ - title: '楠岃瘉鐮佸凡鍙戦��', - icon: 'success', - duration: 2000, - }); - this.setData({ - codeSent: true, - }); - // 鍚姩鍊掕鏃� - this.startCountdown(); + // 鍙戦�侀獙璇佺爜璇锋眰 + this.postCode(); }, - //鍊掕鏃� - startCountdown: function () { - let that = this; - let timer = setInterval(function () { - let countdown = that.data.countdown - 1; - that.setData({ - countdown: countdown, - }); - if (countdown <= 0) { + /** + * 寮�濮嬪�掕鏃� + */ + startCountDown: function () { + this.setData({ + counting: true, + countDown: 60 + }); + + const timer = setInterval(() => { + if (this.data.countDown <= 1) { clearInterval(timer); - that.setData({ - codeSent: false, - countdown: 60, + this.setData({ + counting: false, + codeText: '鑾峰彇楠岃瘉鐮�' + }); + } else { + this.setData({ + countDown: this.data.countDown - 1, + codeText: `${this.data.countDown - 1}绉掑悗閲嶅彂` }); } }, 1000); + + // 淇濆瓨timer寮曠敤锛屼互渚垮湪椤甸潰鍗歌浇鏃舵竻闄� + this.countDownTimer = timer; + }, + + /** + * 鍋滄鍊掕鏃� + */ + stopCountDown: function () { + if (this.countDownTimer) { + clearInterval(this.countDownTimer); + } + this.setData({ + counting: false, + codeText: '鑾峰彇楠岃瘉鐮�' + }); }, /** * 鐧诲綍 */ - login: function (e) { - console.log("login") - let userName = "寮犱笁" - wx.navigateTo({ - url: '/pages/wxbind/wxbind' - }) + login: function () { + const { + phone, + verificationCode + } = this.data; + + // 楠岃瘉鎵嬫満鍙峰拰楠岃瘉鐮� + if (!/^1\d{10}$/.test(phone)) { + wx.showToast({ + title: '璇疯緭鍏ユ纭殑鎵嬫満鍙�', + icon: 'none' + }); + return; + } + + if (!/^\d{6}$/.test(verificationCode)) { + wx.showToast({ + title: '璇疯緭鍏�6浣嶉獙璇佺爜', + icon: 'none' + }); + return; + } + + // 鏄剧ず鍔犺浇涓� + wx.showLoading({ + title: '鐧诲綍涓�...', + mask: true + }); + + // 鏍囪涓烘墜鍔ㄥ鑸紝纭繚涓嶄細瑙﹀彂杩斿洖閫昏緫 + console.log('鐧诲綍鎸夐挳鐐瑰嚮锛岃缃甿anualNavigate=true'); + this.setData({ + manualNavigate: true + }); + + this.wsLogin(); }, + /** + * 璺宠浆鍒版敞鍐岄〉闈� + */ + goToRegister: function () { + wx.showToast({ + title: '娉ㄥ唽鍔熻兘鏆傛湭寮�鏀�', + icon: 'none', + duration: 2000 + }); + }, + /** + * 璺宠浆鍒板繕璁板瘑鐮侀〉闈� + */ + goToForgetPassword: function () { + wx.showToast({ + title: '鎵惧洖瀵嗙爜鍔熻兘鏆傛湭寮�鏀�', + icon: 'none', + duration: 2000 + }); + }, /** * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鍔犺浇 */ - onLoad(options) { - + onLoad: function (options) { + console.log('login椤甸潰鍔犺浇锛宱ptions:', options); + + // 璁剧疆椤甸潰鏁版嵁 + this.setData({ + fromBack: false, // 鏍囪鏄惁鏄粠杩斿洖鎸夐挳杩斿洖鐨� + manualNavigate: false // 鏍囪鏄惁鏄�氳繃缂栫▼鏂瑰紡瀵艰埅鐨� + }); + + // 鑾峰彇閫夋嫨鐨勯」鐩� - 浼樺厛浣跨敤URL鍙傛暟 + if (options && options.project) { + const project = options.project; + const projectName = project === 'JYG' ? '鍢夊唱鍏抽」鐩�' : + project === 'MQ' ? '姘戝嫟椤圭洰' : + project === 'TEST' ? '娴嬭瘯椤圭洰' : '鏈煡椤圭洰'; + + console.log(`浠嶶RL鍙傛暟鑾峰彇椤圭洰淇℃伅: ${project} (${projectName})`); + + this.setData({ + 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.getItemSafe('selectedProject').then(project => { + if (project) { + const projectName = project === 'JYG' ? '鍢夊唱鍏抽」鐩�' : + project === 'MQ' ? '姘戝嫟椤圭洰' : + project === 'TEST' ? '娴嬭瘯椤圭洰' : '鏈煡椤圭洰'; + console.log(`浠庡瓨鍌ㄨ幏鍙栭」鐩俊鎭�: ${project} (${projectName})`); + + this.setData({ + selectedProject: project, + projectName: projectName + }); + } else { + console.log('鏈壘鍒板凡閫夋嫨鐨勯」鐩紝浣跨敤榛樿椤圭洰'); + } + }).catch(err => { + console.error('鑾峰彇宸查�夋嫨椤圭洰澶辫触:', err); + }); + } }, /** @@ -99,14 +263,104 @@ * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰闅愯棌 */ 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爜瀵艰埅鐨�'); + } }, /** * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鍗歌浇 */ onUnload() { - + // 娓呴櫎楠岃瘉鐮佸�掕鏃跺畾鏃跺櫒 + if (this.countDownTimer) { + 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锛屽亣瀹氭槸杩斿洖鎸夐挳鎿嶄綔'); + + // 灏濊瘯浣跨敤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(); + } + }); }, /** @@ -129,7 +383,179 @@ onShareAppMessage() { }, - - - + //鑾峰彇楠岃瘉鐮� + postCode: function () { + const params = { + url: 'wx/client/send_sms?phoneNumber=' + this.data.phone + }; + post(params) + .then((data) => { + wx.showToast({ + title: '楠岃瘉鐮佸凡鍙戦��', + icon: 'success', + duration: 2000, + }); + this.setData({ + codeSent: true, + }); + // 寮�濮嬪�掕鏃� + this.startCountDown(); + }) + .catch((error) => { + wx.showToast({ + title: error.msg, + icon: 'none' + }); + console.error('Failed to add item:', error); + }); + }, + wsLogin() { + // 鏍囪涓烘墜鍔ㄥ鑸� + console.log('wsLogin璋冪敤锛岃缃甿anualNavigate=true'); + this.setData({ + manualNavigate: true + }); + + wx.login({ + success: res => { + if (res.code) { + console.log('寰俊鐧诲綍鎴愬姛锛岃幏鍙栧埌鐨刢ode:', res.code); + // 鍙戦�� res.code 鍒板悗鍙版湇鍔″櫒鎹㈠彇 openId, sessionKey, unionId + this.verify(res.code) + } else { + 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: { + phoneNumber: this.data.phone, + securityCode: this.data.verificationCode, + code: wxCode + } + }; + + post(params) + .then((data) => { + wx.hideLoading(); + + 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' : + this.data.selectedProject === 'MQ' ? 'mq' : + this.data.selectedProject === 'TEST' ? 'test' : 'unknown'; + 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 || '楠岃瘉澶辫触', + icon: 'error', + duration: 3000, + }); + }); + }, + bindSuccess: function () { + // 璁剧疆鏍囪锛岃〃绀洪�氳繃缂栫▼鏂瑰紡瀵艰埅 + console.log('缁戝畾鎴愬姛锛屾渶缁堢‘璁anualNavigate=true'); + this.setData({ + manualNavigate: true, + fromBack: false // 纭繚涓嶄細琚瘑鍒负杩斿洖鎿嶄綔 + }); + + // 璁剧疆鍏ㄥ眬鐧诲綍鐘舵�� + getApp().globalData.isLoggedIn = true; + + + wx.showToast({ + title: '缁戝畾鎴愬姛', + icon: 'success', + duration: 1500, + mask: true, + success: () => { + // 寤惰繜璺宠浆锛岀‘淇漈oast鏄剧ず瀹屾垚 + setTimeout(() => { + console.log('鐧诲綍鎴愬姛锛屽噯澶囪烦杞埌棣栭〉'); + // 璺宠浆鍒伴椤碉紝浣跨敤reLaunch鑰屼笉鏄痳edirectTo + wx.redirectTo({ + url: '/pages/home/home' + }); + }, 1500); + } + }); + }, }) \ No newline at end of file -- Gitblit v1.8.0