管灌系统农户端微信小程序(嘉峪关应用)
更新项目配置,添加多个项目的专有设置,包括登录需求和统一ID;优化用户数据获取逻辑,确保根据项目需求进行登录状态检查;调整界面显示项目名称和提示信息,增强用户体验。
3个文件已修改
326 ■■■■■ 已修改文件
api/config.js 91 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/home/home.js 233 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
api/config.js
@@ -1,66 +1,69 @@
const { ENV } = require('./env')
const {
  ENV
} = require('./env')
let BASEURL
const PROJECT_URLS = {
    JYG: 'https://irrigate.dayuyanjiuyuan.top/', // 嘉峪关项目
    MQ: 'https://shifanqu1.dayuyanjiuyuan.top/',   // 民勤项目
      TEST:'https://no253541tf71.vicp.fun/'// test项目
    // TEST:'http://192.168.40.182:8087/'// test项目
    //   MQ: 'https://no253541tf71.vicp.fun/'    // 民勤项目
    // TEST: 'http://192.168.40.166:54321/'
  JYG: 'https://irrigate.dayuyanjiuyuan.top/', // 嘉峪关项目
  MQ: 'https://shifanqu1.dayuyanjiuyuan.top/', // 民勤项目
  TEST: 'https://no253541tf71.vicp.fun/', // test项目
  SCHOOL: 'https://school.dayuyanjiuyuan.top/' // 学校项目
  // TEST:'http://192.168.40.182:8087/'// test项目
  // MQ: 'https://no253541tf71.vicp.fun/'    // 民勤项目
  // TEST: 'http://192.168.40.166:54321/'
}
// 尝试从本地存储获取已选择的项目
let selectedProject = 'JYG'; // 默认为嘉峪关项目
try {
    // 尝试从本地存储获取已选择的项目
    if (typeof wx !== 'undefined') {
        try {
            const selectedProjectFromStorage = wx.getStorageSync('selectedProject');
            if (selectedProjectFromStorage) {
                selectedProject = selectedProjectFromStorage;
                console.log('从本地存储加载项目设置:', selectedProject);
            }
        } catch (e) {
            console.error('从本地存储获取项目失败:', e);
        }
  // 尝试从本地存储获取已选择的项目
  if (typeof wx !== 'undefined') {
    try {
      const selectedProjectFromStorage = wx.getStorageSync('selectedProject');
      if (selectedProjectFromStorage) {
        selectedProject = selectedProjectFromStorage;
        console.log('从本地存储加载项目设置:', selectedProject);
      }
    } catch (e) {
      console.error('从本地存储获取项目失败:', e);
    }
  }
    // 如果全局应用已初始化,也尝试从全局变量获取
    const app = getApp();
    if (app && app.globalData && app.globalData.selectedProject) {
        selectedProject = app.globalData.selectedProject;
        console.log('从全局变量加载项目设置:', selectedProject);
    }
  // 如果全局应用已初始化,也尝试从全局变量获取
  const app = getApp();
  if (app && app.globalData && app.globalData.selectedProject) {
    selectedProject = app.globalData.selectedProject;
    console.log('从全局变量加载项目设置:', selectedProject);
  }
} catch (e) {
    console.error('获取已选择项目失败:', e);
  console.error('获取已选择项目失败:', e);
}
switch (ENV) {
    case 'production':
        BASEURL = PROJECT_URLS[selectedProject] || PROJECT_URLS.JYG;
        break;
    case 'test':
        // BASEURL 将根据用户选择的项目动态设置
        BASEURL = PROJECT_URLS[selectedProject] || PROJECT_URLS.JYG;
        break;
    default:
        BASEURL = PROJECT_URLS[selectedProject] || PROJECT_URLS.JYG;
        break;
  case 'production':
    BASEURL = PROJECT_URLS[selectedProject] || PROJECT_URLS.JYG;
    break;
  case 'test':
    // BASEURL 将根据用户选择的项目动态设置
    BASEURL = PROJECT_URLS[selectedProject] || PROJECT_URLS.JYG;
    break;
  default:
    BASEURL = PROJECT_URLS[selectedProject] || PROJECT_URLS.JYG;
    break;
}
// 导出动态设置 BASEURL 的函数
function setBaseUrl(project) {
    if (PROJECT_URLS[project]) {
        BASEURL = PROJECT_URLS[project];
        console.log('动态设置 BASEURL:', BASEURL);
        return true;
    }
    return false;
  if (PROJECT_URLS[project]) {
    BASEURL = PROJECT_URLS[project];
    console.log('动态设置 BASEURL:', BASEURL);
    return true;
  }
  return false;
}
module.exports = {
    BASEURL,// 项目接口地址,支持多域名
    PROJECT_URLS,
    setBaseUrl
  BASEURL, // 项目接口地址,支持多域名
  PROJECT_URLS,
  setBaseUrl
}
app.js
@@ -21,7 +21,7 @@
    userId:"",
    userCode:"",
    token:"",
    isLoggedIn:false,
    isLoggedIn:false,//是否已经登录
    operator:"2025030416200600006",
    clientId:"",
    AppID:"wxbc2b6a00dd904ead",
pages/home/home.js
@@ -7,6 +7,35 @@
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({
  /**
@@ -36,7 +65,8 @@
    selectedProject: '',
    avatarTapCount: 0,
    isFromLogin: false,
    showTipDialog: ''
    showTipDialog: '',
    projectConfig: PROJECT_CONFIG // 添加项目配置到data中
  },
  openValve: function (e) {
@@ -153,44 +183,39 @@
          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);
          }
          // 继续初始化页面
@@ -219,7 +244,7 @@
        console.log('获取存储数据中断:', error.message);
        // 如果是从登录页返回或已登录,不再跳转
        if (fromLogin || getApp().globalData.isLoggedIn) {
        if (fromLogin) {
          console.log('从登录页返回或已登录,继续初始化页面');
          this.continueInitPage(options);
          return;
@@ -290,12 +315,6 @@
    // 再次确认是否从登录页返回
    if (this.getFromLogin()) {
      console.log('检测到从登录页返回的标记,不进行登录检查');
      return;
    }
    // 再次检查全局登录状态
    if (getApp().globalData.isLoggedIn) {
      console.log('检测到全局登录状态,不进行登录检查');
      return;
    }
@@ -389,7 +408,6 @@
        icon: 'error'
      })
    }
  },
  //轮灌
  irrigation() {
@@ -905,9 +923,15 @@
    // 获取当前已选项目和新选择的项目
    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;
@@ -944,9 +968,6 @@
    // 保存项目选择到本地存储
    storage.setItem('selectedProject', newProject).then(() => {
      // 更新 BASEURL
      const {
        PROJECT_URLS
      } = require('../../api/config.js');
      const baseUrl = PROJECT_URLS[newProject];
      // 更新全局变量
@@ -954,49 +975,43 @@
      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
@@ -1004,7 +1019,7 @@
      // 显示切换成功提示
      wx.showToast({
        title: `已选择${projectName}`,
        title: `已选择${projectConfig.displayName}`,
        icon: 'success',
        duration: 2000
      });
@@ -1037,6 +1052,13 @@
    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;
    }
@@ -1100,6 +1122,12 @@
            return;
          }
          // 检查项目是否需要登录
          if (currentProject && PROJECT_CONFIG[currentProject] && !PROJECT_CONFIG[currentProject].needLogin) {
            console.log('最终检查: 当前项目不需要登录:', currentProject);
            return;
          }
          console.log('确认需要跳转到登录页');
          // 跳转前再次检查登录页面临时标记
@@ -1125,6 +1153,12 @@
        // 再次检查是否已从登录页返回
        if (this.getFromLogin()) {
          console.log('错误处理: 已从登录页返回,不再跳转');
          return;
        }
        // 检查项目是否需要登录
        if (currentProject && PROJECT_CONFIG[currentProject] && !PROJECT_CONFIG[currentProject].needLogin) {
          console.log('错误处理: 当前项目不需要登录:', currentProject);
          return;
        }
@@ -1213,6 +1247,13 @@
  // 微信登录
  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: '正在登录请稍候...',
@@ -1251,8 +1292,10 @@
                  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);
@@ -1262,14 +1305,14 @@
                  // 保存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 => {