| | |
| | | const { |
| | | PROJECT_URLS |
| | | } = require('../../api/config.js'); |
| | | |
| | | // 项目配置,包含各项目的专有设置 |
| | | const PROJECT_CONFIG = { |
| | | JYG: { |
| | | tag: 'ym', |
| | | displayName: '嘉峪关项目', |
| | | needLogin: true // 需要登录 |
| | | }, |
| | | MQ: { |
| | | tag: 'mq', |
| | | displayName: '民勤项目', |
| | | operatorId: '2025033115305200006', // 统一ID用于operator和clientId |
| | | needLogin: false // 不需要登录 |
| | | }, |
| | | TEST: { |
| | | tag: 'ym', |
| | | displayName: '测试项目', |
| | | operatorId: '2025032411245000006', // 统一ID用于operator和clientId |
| | | vcId: '2024122617295800009', |
| | | needLogin: false // 不需要登录 |
| | | }, |
| | | SCHOOL: { |
| | | tag: 'XX', |
| | | displayName: '学校项目', |
| | | operatorId: '2025040215305200006', // 统一ID用于operator和clientId |
| | | needLogin: true // 不需要登录 |
| | | } |
| | | }; |
| | | |
| | | Page({ |
| | | |
| | | /** |
| | |
| | | selectedProject: '', |
| | | avatarTapCount: 0, |
| | | isFromLogin: false, |
| | | showTipDialog: '' |
| | | showTipDialog: '', |
| | | projectConfig: PROJECT_CONFIG // 添加项目配置到data中 |
| | | }, |
| | | |
| | | openValve: function (e) { |
| | |
| | | } |
| | | |
| | | |
| | | }, |
| | | //获取用户数据 |
| | | getUserData() { |
| | | get('/items') |
| | | .then((data) => { |
| | | this.setData({ |
| | | items: data |
| | | }); |
| | | }) |
| | | .catch((error) => { |
| | | console.error('Failed to fetch data:', error); |
| | | }); |
| | | }, |
| | | |
| | | |
| | |
| | | getApp().globalData.selectedProject = project; |
| | | |
| | | // 根据项目设置对应的tag |
| | | if (project === 'JYG') { |
| | | getApp().globalData.tag = 'ym'; // 嘉峪关项目对应tag为ym |
| | | const projectConfig = PROJECT_CONFIG[project]; |
| | | if (projectConfig) { |
| | | getApp().globalData.tag = projectConfig.tag; |
| | | this.setData({ |
| | | userName: "嘉峪关项目" |
| | | userName: projectConfig.displayName |
| | | }); |
| | | } else if (project === 'MQ') { |
| | | getApp().globalData.tag = 'mq'; // 民勤项目对应tag为mq |
| | | this.setData({ |
| | | userName: "民勤项目" |
| | | }); |
| | | // 加载民勤项目持久化参数 |
| | | return storage.getItemSafe('MQ_params') |
| | | .then(params => { |
| | | if (params) { |
| | | getApp().globalData.operator = params.operator; |
| | | getApp().globalData.clientId = params.clientId; |
| | | getApp().globalData.isLoggedIn = params.isLoggedIn; |
| | | getApp().globalData.sessionId = params.sessionId; |
| | | } |
| | | return Promise.resolve(); |
| | | }); |
| | | } else if (project === 'TEST') { |
| | | getApp().globalData.tag = 'ym'; // 测试项目对应tag为test |
| | | this.setData({ |
| | | userName: "测试项目" |
| | | }); |
| | | // 加载测试项目持久化参数 |
| | | return storage.getItemSafe('TEST_params') |
| | | .then(params => { |
| | | if (params) { |
| | | getApp().globalData.operator = params.operator; |
| | | getApp().globalData.clientId = params.clientId; |
| | | getApp().globalData.isLoggedIn = params.isLoggedIn; |
| | | getApp().globalData.sessionId = params.sessionId; |
| | | getApp().globalData.vcId = params.vcId; |
| | | } |
| | | return Promise.resolve(); |
| | | }); |
| | | } |
| | | |
| | | // 根据项目设置对应的operator和clientId |
| | | if (projectConfig && projectConfig.operatorId) { |
| | | getApp().globalData.operator = projectConfig.operatorId; |
| | | getApp().globalData.clientId = projectConfig.operatorId; |
| | | getApp().globalData.isLoggedIn = true; |
| | | getApp().globalData.sessionId = projectConfig.operatorId; |
| | | |
| | | // 如果有vcId,也设置 |
| | | if (projectConfig.vcId) { |
| | | getApp().globalData.vcId = projectConfig.vcId; |
| | | } |
| | | |
| | | // 持久化存储项目参数 |
| | | const params = { |
| | | operator: projectConfig.operatorId, |
| | | clientId: projectConfig.operatorId, |
| | | isLoggedIn: true, |
| | | sessionId: projectConfig.operatorId |
| | | }; |
| | | |
| | | if (projectConfig.vcId) { |
| | | params.vcId = projectConfig.vcId; |
| | | } |
| | | |
| | | storage.setItem(`${project}_params`, params); |
| | | } |
| | | |
| | | // 继续初始化页面 |
| | |
| | | console.log('获取存储数据中断:', error.message); |
| | | |
| | | // 如果是从登录页返回或已登录,不再跳转 |
| | | if (fromLogin || getApp().globalData.isLoggedIn) { |
| | | if (fromLogin) { |
| | | console.log('从登录页返回或已登录,继续初始化页面'); |
| | | this.continueInitPage(options); |
| | | return; |
| | |
| | | // 再次确认是否从登录页返回 |
| | | if (this.getFromLogin()) { |
| | | console.log('检测到从登录页返回的标记,不进行登录检查'); |
| | | return; |
| | | } |
| | | |
| | | // 再次检查全局登录状态 |
| | | if (getApp().globalData.isLoggedIn) { |
| | | console.log('检测到全局登录状态,不进行登录检查'); |
| | | return; |
| | | } |
| | | |
| | |
| | | }, |
| | | //解绑用户 |
| | | unbind() { |
| | | // 检查当前项目是否需要登录 |
| | | const currentProject = getApp().globalData.selectedProject; |
| | | const projectConfig = PROJECT_CONFIG[currentProject]; |
| | | |
| | | // 如果当前项目配置为不需要登录,则提示用户不可解绑 |
| | | if (projectConfig && !projectConfig.needLogin) { |
| | | wx.showToast({ |
| | | title: '当前用户不可解绑', |
| | | icon: 'none', |
| | | duration: 2000 |
| | | }); |
| | | return; |
| | | } |
| | | |
| | | if (getApp().globalData.isLoggedIn) { |
| | | wx.showModal({ |
| | | title: '解绑确认', |
| | |
| | | icon: 'error' |
| | | }) |
| | | } |
| | | |
| | | }, |
| | | //轮灌 |
| | | irrigation() { |
| | |
| | | return; |
| | | } |
| | | |
| | | // 检查当前项目是否需要登录 |
| | | const currentProject = app.globalData.selectedProject; |
| | | const projectConfig = PROJECT_CONFIG[currentProject]; |
| | | const needLogin = projectConfig && projectConfig.needLogin; |
| | | |
| | | // 尝试获取用户数据和已开阀记录 |
| | | try { |
| | | // 优先检查全局变量中是否有sessionId |
| | | if (app.globalData.sessionId) { |
| | | console.log('initData: 使用全局sessionId获取数据'); |
| | | this.getUserDataBySession(); |
| | | |
| | | // 只有需要登录的项目才调用getUserDataBySession |
| | | if (needLogin) { |
| | | console.log('initData: 当前项目需要登录,获取用户数据'); |
| | | this.getUserDataBySession(); |
| | | } else { |
| | | console.log('initData: 当前项目不需要登录,跳过获取用户数据'); |
| | | } |
| | | |
| | | this.getOpenList(); |
| | | return; |
| | | } |
| | |
| | | console.error('userData解析失败:', e); |
| | | } |
| | | } |
| | | // 无论如何都尝试获取用户信息和开阀列表 |
| | | this.getUserDataBySession(); |
| | | |
| | | // 只有需要登录的项目才调用getUserDataBySession |
| | | if (needLogin) { |
| | | console.log('initData: 当前项目需要登录,获取用户数据'); |
| | | this.getUserDataBySession(); |
| | | } else { |
| | | console.log('initData: 当前项目不需要登录,跳过获取用户数据'); |
| | | } |
| | | |
| | | this.getOpenList(); |
| | | }) |
| | | .catch((err) => { |
| | |
| | | console.log('initData:catch: 检测到从登录页返回的标记,只获取开阀列表'); |
| | | this.getOpenList(); |
| | | } else { |
| | | this.getUserDataBySession(); |
| | | // 只有需要登录的项目才调用getUserDataBySession |
| | | if (needLogin) { |
| | | console.log('initData:catch: 当前项目需要登录,获取用户数据'); |
| | | this.getUserDataBySession(); |
| | | } else { |
| | | console.log('initData:catch: 当前项目不需要登录,跳过获取用户数据'); |
| | | } |
| | | |
| | | this.getOpenList(); |
| | | } |
| | | }); |
| | |
| | | console.log('initData:else: 检测到从登录页返回的标记,只获取开阀列表'); |
| | | this.getOpenList(); |
| | | } else { |
| | | this.getUserDataBySession(); |
| | | // 只有需要登录的项目才调用getUserDataBySession |
| | | if (needLogin) { |
| | | console.log('initData:else: 当前项目需要登录,获取用户数据'); |
| | | this.getUserDataBySession(); |
| | | } else { |
| | | console.log('initData:else: 当前项目不需要登录,跳过获取用户数据'); |
| | | } |
| | | |
| | | this.getOpenList(); |
| | | } |
| | | } |
| | |
| | | console.log('initData:error: 检测到从登录页返回的标记,只获取开阀列表'); |
| | | this.getOpenList(); |
| | | } else { |
| | | // 出错时仍尝试获取数据 |
| | | this.getUserDataBySession(); |
| | | // 只有需要登录的项目才调用getUserDataBySession |
| | | if (needLogin) { |
| | | console.log('initData:error: 当前项目需要登录,获取用户数据'); |
| | | this.getUserDataBySession(); |
| | | } else { |
| | | console.log('initData:error: 当前项目不需要登录,跳过获取用户数据'); |
| | | } |
| | | |
| | | this.getOpenList(); |
| | | } |
| | | } |
| | |
| | | // 获取当前已选项目和新选择的项目 |
| | | const currentProject = getApp().globalData.selectedProject; |
| | | const newProject = this.data.selectedProject; |
| | | const projectName = newProject === 'JYG' ? '嘉峪关项目' : |
| | | newProject === 'MQ' ? '民勤项目' : |
| | | newProject === 'TEST' ? '测试项目' : '未知项目'; |
| | | const projectConfig = PROJECT_CONFIG[newProject]; |
| | | |
| | | if (!projectConfig) { |
| | | wx.showToast({ |
| | | title: '项目配置错误', |
| | | icon: 'none' |
| | | }); |
| | | return; |
| | | } |
| | | |
| | | // 检查是否切换了项目(如果当前项目不同于新选择的项目) |
| | | const isProjectChanged = currentProject && currentProject !== newProject; |
| | |
| | | // 保存项目选择到本地存储 |
| | | storage.setItem('selectedProject', newProject).then(() => { |
| | | // 更新 BASEURL |
| | | const { |
| | | PROJECT_URLS |
| | | } = require('../../api/config.js'); |
| | | const baseUrl = PROJECT_URLS[newProject]; |
| | | |
| | | // 更新全局变量 |
| | |
| | | getApp().globalData.baseUrl = baseUrl; |
| | | getApp().globalData.selectedProject = newProject; |
| | | |
| | | // 根据项目设置对应的tag和clientId |
| | | if (newProject === 'JYG') { |
| | | getApp().globalData.tag = 'ym'; // 嘉峪关项目对应tag为ym |
| | | this.setData({ |
| | | userName: "嘉峪关项目" |
| | | }); |
| | | } else if (newProject === 'MQ') { |
| | | getApp().globalData.tag = 'mq'; // 民勤项目对应tag为mq |
| | | getApp().globalData.operator = '2025033115305200006'; |
| | | getApp().globalData.clientId = '2025033115305200006'; |
| | | // 通过配置对象统一设置项目参数 |
| | | getApp().globalData.tag = projectConfig.tag; |
| | | |
| | | // 设置用户界面显示的项目名称 |
| | | this.setData({ |
| | | userName: projectConfig.displayName |
| | | }); |
| | | |
| | | // 对于不需要登录的项目,直接设置operator和clientId |
| | | if (!projectConfig.needLogin && projectConfig.operatorId) { |
| | | const operatorId = projectConfig.operatorId; |
| | | getApp().globalData.operator = operatorId; |
| | | getApp().globalData.clientId = operatorId; |
| | | getApp().globalData.isLoggedIn = true; |
| | | getApp().globalData.sessionId = '2025033115305200006'; |
| | | this.setData({ |
| | | userName: "民勤项目" |
| | | }); |
| | | // 持久化存储民勤项目参数 |
| | | storage.setItem('MQ_params', { |
| | | operator: '2025033115305200006', |
| | | clientId: '2025033115305200006', |
| | | getApp().globalData.sessionId = operatorId; |
| | | |
| | | // 如果有vcId,也设置 |
| | | if (projectConfig.vcId) { |
| | | getApp().globalData.vcId = projectConfig.vcId; |
| | | } |
| | | |
| | | // 持久化存储项目参数 |
| | | const params = { |
| | | operator: operatorId, |
| | | clientId: operatorId, |
| | | isLoggedIn: true, |
| | | sessionId: '2025033115305200006' |
| | | }); |
| | | } else if (newProject === 'TEST') { |
| | | getApp().globalData.tag = 'ym'; // 测试项目对应tag为test |
| | | getApp().globalData.operator = '2025032411245000006'; |
| | | getApp().globalData.clientId = '2025032411245000006'; |
| | | getApp().globalData.isLoggedIn = true; |
| | | getApp().globalData.sessionId = '2025032411245000006'; |
| | | getApp().globalData.vcId = '2024122617295800009'; |
| | | this.setData({ |
| | | userName: "测试项目" |
| | | }); |
| | | // 持久化存储测试项目参数 |
| | | storage.setItem('TEST_params', { |
| | | operator: '2025032411245000006', |
| | | clientId: '2025032411245000006', |
| | | isLoggedIn: true, |
| | | sessionId: '2025032411245000006', |
| | | vcId: '2024122617295800009' |
| | | }); |
| | | sessionId: operatorId |
| | | }; |
| | | |
| | | if (projectConfig.vcId) { |
| | | params.vcId = projectConfig.vcId; |
| | | } |
| | | |
| | | storage.setItem(`${newProject}_params`, params); |
| | | } |
| | | |
| | | console.log('已切换到项目:', projectName, '域名:', baseUrl, 'tag:', getApp().globalData.tag); |
| | | console.log('已切换到项目:', projectConfig.displayName, '域名:', baseUrl, 'tag:', getApp().globalData.tag); |
| | | |
| | | this.setData({ |
| | | showProjectDialog: false |
| | |
| | | |
| | | // 显示切换成功提示 |
| | | wx.showToast({ |
| | | title: `已选择${projectName}`, |
| | | title: `已选择${projectConfig.displayName}`, |
| | | icon: 'success', |
| | | duration: 2000 |
| | | }); |
| | |
| | | const fromLogin = this.getFromLogin(); |
| | | if (fromLogin) { |
| | | console.log('从登录页返回,不再重定向'); |
| | | return; |
| | | } |
| | | |
| | | // 检查当前项目是否需要登录 |
| | | const currentProject = app.globalData.selectedProject; |
| | | if (currentProject && PROJECT_CONFIG[currentProject] && !PROJECT_CONFIG[currentProject].needLogin) { |
| | | console.log('当前项目不需要登录:', currentProject); |
| | | return; |
| | | } |
| | | |
| | |
| | | return; |
| | | } |
| | | |
| | | // 检查项目是否需要登录 |
| | | if (currentProject && PROJECT_CONFIG[currentProject] && !PROJECT_CONFIG[currentProject].needLogin) { |
| | | console.log('最终检查: 当前项目不需要登录:', currentProject); |
| | | return; |
| | | } |
| | | |
| | | console.log('确认需要跳转到登录页'); |
| | | |
| | | // 跳转前再次检查登录页面临时标记 |
| | |
| | | // 再次检查是否已从登录页返回 |
| | | if (this.getFromLogin()) { |
| | | console.log('错误处理: 已从登录页返回,不再跳转'); |
| | | return; |
| | | } |
| | | |
| | | // 检查项目是否需要登录 |
| | | if (currentProject && PROJECT_CONFIG[currentProject] && !PROJECT_CONFIG[currentProject].needLogin) { |
| | | console.log('错误处理: 当前项目不需要登录:', currentProject); |
| | | return; |
| | | } |
| | | |
| | |
| | | |
| | | // 微信登录 |
| | | wxLogin() { |
| | | // 检查当前项目是否需要登录 |
| | | const currentProject = getApp().globalData.selectedProject; |
| | | if (currentProject && PROJECT_CONFIG[currentProject] && !PROJECT_CONFIG[currentProject].needLogin) { |
| | | console.log('wxLogin: 当前项目不需要登录:', currentProject); |
| | | return; |
| | | } |
| | | |
| | | if (!getApp().globalData.isLoggedIn) { |
| | | wx.showLoading({ |
| | | title: '正在登录请稍候...', |
| | |
| | | getApp().globalData.isLoggedIn = true; |
| | | |
| | | // 设置正确的项目tag |
| | | const tag = this.data.selectedProject === 'JYG' ? 'ym' : 'mq'; |
| | | getApp().globalData.tag = tag; |
| | | const projectConfig = PROJECT_CONFIG[this.data.selectedProject]; |
| | | if (projectConfig) { |
| | | getApp().globalData.tag = projectConfig.tag; |
| | | } |
| | | |
| | | // 保存到存储 |
| | | storage.setItem("sessionId", sessionId); |
| | |
| | | // 保存userData信息,包含sessionId和tag |
| | | const userData = JSON.stringify({ |
| | | sessionId: sessionId, |
| | | tag: tag, |
| | | tag: projectConfig ? projectConfig.tag : 'ym', |
| | | project: this.data.selectedProject, |
| | | userName: response.content.client.clientName, |
| | | userPhone: response.content.client.userPhone |
| | | }); |
| | | storage.setItem("userData", userData) |
| | | .then(() => { |
| | | console.log('用户数据保存成功,包含项目信息:', this.data.selectedProject, 'tag:', tag); |
| | | console.log('用户数据保存成功,包含项目信息:', this.data.selectedProject, 'tag:', projectConfig ? projectConfig.tag : 'ym'); |
| | | this.initData(); |
| | | }) |
| | | .catch(err => { |