| | |
| | | selectedProject: '', |
| | | avatarTapCount: 0, |
| | | isFromLogin: false, |
| | | showTipDialog:'' |
| | | showTipDialog: '' |
| | | }, |
| | | |
| | | openValve: function (e) { |
| | |
| | | }).exec(); |
| | | }, |
| | | startPullDownRefresh() { |
| | | if (!this.data.isWXRefreshing) { |
| | | var self = this; |
| | | console.log(this.data.isRefreshing); |
| | | this.setData({ |
| | | isRefreshing: true |
| | | }); |
| | | this.getOpenList(); |
| | | |
| | | if (getApp().globalData.isLoggedIn) { |
| | | if (!this.data.isWXRefreshing) { |
| | | var self = this; |
| | | console.log(this.data.isRefreshing); |
| | | this.setData({ |
| | | isRefreshing: true |
| | | }); |
| | | this.getOpenList(); |
| | | } |
| | | } else { |
| | | wx.showToast({ |
| | | title: '请先登录', |
| | | icon: 'error' |
| | | }) |
| | | } |
| | | |
| | | |
| | | }, |
| | | //获取用户数据 |
| | |
| | | */ |
| | | onLoad(options) { |
| | | console.log('home页面onLoad开始,参数:', options); |
| | | //当开阀成功后调用刷新 |
| | | //当开阀成功后调用刷新 |
| | | if (options.param === "1" || options.param === "2") { |
| | | this.setData({ |
| | | options: options |
| | | }) |
| | | } |
| | | this.setData({ |
| | | options: options |
| | | }) |
| | | } |
| | | // 检查是否从登录页面返回 |
| | | let fromLogin = false; |
| | | |
| | |
| | | if (options && options.fromLogin === 'true') { |
| | | console.log('检测到URL参数fromLogin=true'); |
| | | fromLogin = true; |
| | | } |
| | | |
| | | // 检查是否有临时标记 |
| | | try { |
| | | const tempFromLogin = wx.getStorageSync('_temp_from_login'); |
| | | console.log('读取到的临时标记值:', tempFromLogin); |
| | | |
| | | if (tempFromLogin === 'true') { |
| | | console.log('检测到临时fromLogin标记'); |
| | | fromLogin = true; |
| | | |
| | | // 延迟清除临时标记,确保其他地方有足够时间读取 |
| | | setTimeout(() => { |
| | | try { |
| | | wx.removeStorageSync('_temp_from_login'); |
| | | console.log('自动清除临时fromLogin标记'); |
| | | } catch (e) { |
| | | console.error('清除临时标记失败:', e); |
| | | } |
| | | }, 10000); // 延长到10秒 |
| | | } |
| | | } catch (e) { |
| | | console.error('读取临时标记失败:', e); |
| | | } |
| | | |
| | | console.log('home页面加载,fromLogin:', fromLogin, '参数:', options); |
| | |
| | | }); |
| | | } |
| | | |
| | | // 检查是否有临时标记 |
| | | try { |
| | | const tempFromLogin = wx.getStorageSync('_temp_from_login'); |
| | | console.log('onShow: 读取到的临时标记值:', tempFromLogin); |
| | | |
| | | if (tempFromLogin === 'true') { |
| | | console.log('onShow: 检测到临时fromLogin标记'); |
| | | fromLogin = true; |
| | | this.setData({ |
| | | isFromLogin: true |
| | | }); |
| | | } |
| | | } catch (e) { |
| | | console.error('onShow: 读取临时标记失败:', e); |
| | | } |
| | | |
| | | // 初始化处理 |
| | | if (fromLogin || this.data.isFromLogin) { |
| | | console.log('onShow: 从登录页返回,不进行登录检查'); |
| | |
| | | }, |
| | | //解绑用户 |
| | | unbind() { |
| | | wx.showModal({ |
| | | title: '解绑确认', |
| | | content: '确定要解绑当前账号吗?', |
| | | success: (res) => { |
| | | if (res.confirm) { |
| | | this.unBindPost() |
| | | if (getApp().globalData.isLoggedIn) { |
| | | wx.showModal({ |
| | | title: '解绑确认', |
| | | content: '确定要解绑当前账号吗?', |
| | | success: (res) => { |
| | | if (res.confirm) { |
| | | this.unBindPost() |
| | | } |
| | | } |
| | | } |
| | | }); |
| | | }); |
| | | } else { |
| | | wx.showToast({ |
| | | title: '还未绑定', |
| | | icon: 'error' |
| | | }) |
| | | } |
| | | |
| | | }, |
| | | //轮灌 |
| | | irrigation() { |
| | | wx.navigateTo({ |
| | | url: '/pages/irrigation/irrigation', |
| | | }) |
| | | if (getApp().globalData.isLoggedIn) { |
| | | wx.navigateTo({ |
| | | url: '/pages/irrigation/irrigation', |
| | | }) |
| | | } else { |
| | | wx.showToast({ |
| | | title: '请先登录', |
| | | icon: 'error' |
| | | }) |
| | | } |
| | | }, |
| | | handleChange(e) { |
| | | const item = e.currentTarget.dataset.item; |
| | |
| | | */ |
| | | getOpenList() { |
| | | const app = getApp(); |
| | | |
| | | if (!getApp().globalData.isLoggedIn) { |
| | | wx.showToast({ |
| | | title: '请先登录', |
| | | icon: 'error' |
| | | }) |
| | | this.setData({ |
| | | isRefreshing: false, // 将triggered属性设置为false,表示下拉刷新已完成 |
| | | isWXRefreshing: false, // 将triggered属性设置为false,表示下拉刷新已完成 |
| | | }); |
| | | return; |
| | | } |
| | | // 检查是否从登录页返回 |
| | | const fromLogin = this.getFromLogin(); |
| | | |
| | |
| | | // 获取当前已选项目和新选择的项目 |
| | | const currentProject = getApp().globalData.selectedProject; |
| | | const newProject = this.data.selectedProject; |
| | | const projectName = newProject === 'JYG' ? '嘉峪关项目' : |
| | | newProject === 'MQ' ? '民勤项目' : |
| | | newProject === 'TEST' ? '测试项目' : '未知项目'; |
| | | const projectName = newProject === 'JYG' ? '嘉峪关项目' : |
| | | newProject === 'MQ' ? '民勤项目' : |
| | | newProject === 'TEST' ? '测试项目' : '未知项目'; |
| | | |
| | | // 检查是否切换了项目(如果当前项目不同于新选择的项目) |
| | | const isProjectChanged = currentProject && currentProject !== newProject; |
| | |
| | | }); |
| | | } else if (newProject === 'MQ') { |
| | | getApp().globalData.tag = 'mq'; // 民勤项目对应tag为mq |
| | | getApp().globalData.operator = '2025030517095000006'; |
| | | getApp().globalData.clientId = '2025030517095000006'; |
| | | getApp().globalData.operator = '2025033115305200006'; |
| | | getApp().globalData.clientId = '2025033115305200006'; |
| | | getApp().globalData.isLoggedIn = true; |
| | | getApp().globalData.sessionId = '2025030517095000006'; |
| | | getApp().globalData.sessionId = '2025033115305200006'; |
| | | this.setData({ |
| | | userName: "民勤项目" |
| | | }); |
| | | // 持久化存储民勤项目参数 |
| | | storage.setItem('MQ_params', { |
| | | operator: '2025030517095000006', |
| | | clientId: '2025030517095000006', |
| | | operator: '2025033115305200006', |
| | | clientId: '2025033115305200006', |
| | | isLoggedIn: true, |
| | | sessionId: '2025030517095000006' |
| | | sessionId: '2025033115305200006' |
| | | }); |
| | | } else if (newProject === 'TEST') { |
| | | getApp().globalData.tag = 'ym'; // 测试项目对应tag为test |
| | |
| | | icon: 'success', |
| | | duration: 2000 |
| | | }); |
| | | |
| | | // 直接初始化数据 |
| | | setTimeout(() => { |
| | | console.log('项目已切换,正在初始化数据'); |
| | | this.initData(); |
| | | }, 1000); |
| | | |
| | | }).catch(err => { |
| | | console.error('保存项目选择失败:', err); |
| | | wx.showToast({ |
| | |
| | | // 检查登录状态 |
| | | checkLoginStatus() { |
| | | const app = getApp(); |
| | | |
| | | // 首先,强制再次检查是否从登录页返回 |
| | | try { |
| | | const tempFromLogin = wx.getStorageSync('_temp_from_login'); |
| | | if (tempFromLogin === 'true') { |
| | | console.log('checkLoginStatus: 检测到临时存储_temp_from_login=true,不执行跳转'); |
| | | this.setData({ |
| | | isFromLogin: true |
| | | }); |
| | | return; |
| | | } |
| | | } catch (e) { |
| | | console.error('checkLoginStatus: 读取临时标记失败:', e); |
| | | } |
| | | |
| | | // 检查是否已登录 |
| | | if (app.globalData.isLoggedIn && app.globalData.sessionId) { |
| | |
| | | storage.getItemSafe('isLoggedIn') |
| | | ]) |
| | | .then(([sessionId, clientId, isLoggedIn]) => { |
| | | // 最后一次检查临时标记 |
| | | try { |
| | | const tempFromLogin = wx.getStorageSync('_temp_from_login'); |
| | | if (tempFromLogin === 'true') { |
| | | console.log('Promise内部: 检测到临时存储_temp_from_login=true,不执行跳转'); |
| | | this.setData({ |
| | | isFromLogin: true |
| | | }); |
| | | return; |
| | | } |
| | | } catch (e) {} |
| | | |
| | | if (sessionId) { |
| | | // 从存储中恢复登录状态 |
| | | app.globalData.sessionId = sessionId; |
| | |
| | | wx.setStorageSync('_attempted_login_redirect', 'true'); |
| | | } catch (e) {} |
| | | |
| | | wx.redirectTo({ |
| | | url: `/pages/login/login?project=${this.data.selectedProject}`, |
| | | success: () => console.log('成功跳转到登录页'), |
| | | fail: (err) => console.error('跳转到登录页失败:', err) |
| | | }); |
| | | // wx.navigateTo({ |
| | | // url: `/pages/login/login?project=${this.data.selectedProject}`, |
| | | // success: () => console.log('成功跳转到登录页'), |
| | | // fail: (err) => console.error('跳转到登录页失败:', err) |
| | | // }); |
| | | } |
| | | }) |
| | | .catch(err => { |
| | |
| | | } |
| | | |
| | | // 出错时也跳转到登录页 |
| | | wx.redirectTo({ |
| | | url: `/pages/login/login?project=${this.data.selectedProject}`, |
| | | success: () => console.log('错误后成功跳转到登录页'), |
| | | fail: (err) => console.error('错误后跳转到登录页失败:', err) |
| | | }); |
| | | // wx.navigateTo({ |
| | | // url: `/pages/login/login?project=${this.data.selectedProject}`, |
| | | // success: () => console.log('错误后成功跳转到登录页'), |
| | | // fail: (err) => console.error('错误后跳转到登录页失败:', err) |
| | | // }); |
| | | }); |
| | | }, |
| | | |
| | | // 辅助函数:检查是否从登录页返回 |
| | | getFromLogin() { |
| | | // 先检查全局变量(作为备用方案) |
| | | if (getApp().globalData && getApp().globalData._tempFromLogin === true) { |
| | | console.log('getFromLogin: 检测到全局变量_tempFromLogin=true'); |
| | | // 设置标志,确保下次检查时能识别 |
| | | this.setData({ |
| | | isFromLogin: true |
| | | }); |
| | | |
| | | // 清除全局标记,防止重复识别 |
| | | setTimeout(() => { |
| | | getApp().globalData._tempFromLogin = false; |
| | | console.log('已清除全局变量_tempFromLogin标记'); |
| | | }, 100); |
| | | |
| | | return true; |
| | | } |
| | | |
| | | // 检查是否有设置fromLogin标志 |
| | | if (this.data.isFromLogin) { |
| | | console.log('getFromLogin: 检测到this.data.isFromLogin=true'); |
| | | return true; |
| | | } |
| | | |
| | | // 检查当前页面的options |
| | | const pages = getCurrentPages(); |
| | | const currentPage = pages[pages.length - 1]; |
| | |
| | | }); |
| | | return true; |
| | | } |
| | | |
| | | // 检查临时标记 |
| | | try { |
| | | const tempFromLogin = wx.getStorageSync('_temp_from_login'); |
| | | console.log('getFromLogin: 读取到的临时标记值:', tempFromLogin); |
| | | |
| | | if (tempFromLogin === 'true') { |
| | | console.log('getFromLogin: 检测到临时存储_temp_from_login=true'); |
| | | // 设置标志,确保下次检查时能识别 |
| | | this.setData({ |
| | | isFromLogin: true |
| | | }); |
| | | return true; |
| | | } |
| | | } catch (e) { |
| | | console.error('getFromLogin: 读取临时标记失败:', e); |
| | | } |
| | | |
| | | console.log('getFromLogin: 未检测到从登录页返回的标记'); |
| | | return false; |
| | | }, |
| | |
| | | this.setData({ |
| | | isFromLogin: true |
| | | }); |
| | | } |
| | | |
| | | // 从临时标记中检查 |
| | | try { |
| | | const tempFromLogin = wx.getStorageSync('_temp_from_login'); |
| | | if (tempFromLogin === 'true') { |
| | | console.log('continueInitPage: 检测到临时标记_temp_from_login=true'); |
| | | fromLogin = true; |
| | | this.setData({ |
| | | isFromLogin: true |
| | | }); |
| | | } |
| | | } catch (e) { |
| | | console.error('continueInitPage: 读取临时标记失败:', e); |
| | | } |
| | | |
| | | // 从页面数据中检查 |
| | |
| | | if (!fromLogin) { |
| | | console.log('不是从登录页返回,延迟检查登录状态'); |
| | | setTimeout(() => { |
| | | // 再次检查是否已从登录页返回(可能在初始化过程中状态已变) |
| | | if (this.getFromLogin()) { |
| | | console.log('延迟检查:检测到从登录页返回的标记,不再检查登录状态'); |
| | | return; |
| | | } |
| | | |
| | | // 仅在未登录且不是从登录页返回时检查登录状态 |
| | | if (!getApp().globalData.isLoggedIn) { |
| | | console.log('延迟检查:未登录且不是从登录页返回,执行登录状态检查'); |
| | |
| | | if (response.code === "0001") { |
| | | if (response.content.client.clientId === "") { |
| | | // 未绑定账号,跳转到登录页面 |
| | | wx.redirectTo({ |
| | | url: `/pages/login/login?project=${this.data.selectedProject}` |
| | | }); |
| | | // wx.navigateTo({ |
| | | // url: `/pages/login/login?project=${this.data.selectedProject}` |
| | | // }); |
| | | } else { |
| | | this.setData({ |
| | | userName: response.content.client.clientName, |
| | |
| | | icon: 'error', |
| | | duration: 2000 |
| | | }); |
| | | wx.redirectTo({ |
| | | url: `/pages/login/login?project=${this.data.selectedProject}` |
| | | }); |
| | | // wx.navigateTo({ |
| | | // url: `/pages/login/login?project=${this.data.selectedProject}` |
| | | // }); |
| | | } |
| | | }).catch(error => { |
| | | wx.hideLoading(); |
| | |
| | | title: '登录失败,请重试', |
| | | icon: 'none' |
| | | }); |
| | | wx.redirectTo({ |
| | | url: `/pages/login/login?project=${this.data.selectedProject}` |
| | | }); |
| | | // wx.redirectTo({ |
| | | // url: `/pages/login/login?project=${this.data.selectedProject}` |
| | | // }); |
| | | }); |
| | | } else { |
| | | wx.hideLoading(); |
| | |
| | | cleanupTempMarkers() { |
| | | // 只有在isFromLogin为true时才进行清理 |
| | | if (this.data.isFromLogin) { |
| | | console.log('清理临时标记'); |
| | | |
| | | // 清理存储标记 |
| | | try { |
| | | wx.removeStorageSync('_temp_from_login'); |
| | | } catch (e) { |
| | | console.error('清理存储标记失败:', e); |
| | | } |
| | | |
| | | // 清理全局变量标记 |
| | | if (getApp().globalData) { |
| | | getApp().globalData._tempFromLogin = false; |
| | | } |
| | | |
| | | // 重设isFromLogin为false,但添加延迟,避免影响当前页面的返回逻辑 |
| | | setTimeout(() => { |
| | |
| | | }) |
| | | }); |
| | | }, |
| | | onShareAppMessage: function (options) { |
| | | // 设置分享内容 |
| | | return { |
| | | title: '大禹灌溉助手', // 分享标题 |
| | | path: '/pages/home/home', // 分享路径,该路径需要是当前小程序存在的页面路径 |
| | | imageUrl: '/images/logo2.jpg', // 分享图标,可以是网络图片路径或本地图片路径 |
| | | success: function (res) { |
| | | // 分享成功的回调函数 |
| | | }, |
| | | fail: function (res) { |
| | | // 分享失败的回调函数 |
| | | } |
| | | }; |
| | | } |
| | | }) |