管灌系统农户端微信小程序(嘉峪关应用)
pages/home/home.js
@@ -4,12 +4,13 @@
    get,
    post
} = require('../../api/request.js');
const {
    PROJECT_URLS
} = require('../../api/config.js');
const config = require('../../api/config.js');
const {
    PROJECT_CONFIG
} = require('../../utils/projectConfig.js');
const {
    ENV
} = require('../../api/env.js');
Page({
@@ -42,7 +43,8 @@
        isFromLogin: false,
        showTipDialog: '',
        projectConfig: PROJECT_CONFIG, // 添加项目配置到data中
        showInfoDialog: false
        showInfoDialog: false,
        projectList: []
    },
    openValve: function (e) {
@@ -93,6 +95,10 @@
     */
    onLoad(options) {
        console.log('home页面onLoad开始,参数:', options);
        // 初始化项目列表数据
        this.initProjectList();
        //当开阀成功后调用刷新
        if (options.param === "1" || options.param === "2") {
            this.setData({
@@ -124,6 +130,44 @@
        }, 100);
    },
    // 初始化项目列表数据
    initProjectList() {
        // 将PROJECT_CONFIG对象转换为数组,方便在视图中遍历
        const projectList = Object.entries(PROJECT_CONFIG).map(([key, config]) => ({
            key: key, // 使用key作为项目标识(JYG、MQ等)
            tag: config.tag, // 保留tag字段(原配置中已有的标识,如ym、mq等)
            displayName: config.displayName, // 显示名称
            ...config // 其他配置属性
        }));
        // 获取当前已选择的项目,默认为JYG
        let currentSelectedProject = 'JYG';
        // 尝试从全局变量获取
        const app = getApp();
        if (app && app.globalData && app.globalData.selectedProject) {
            currentSelectedProject = app.globalData.selectedProject;
        } else {
            // 尝试从本地存储获取
            try {
                const savedProject = wx.getStorageSync('selectedProject');
                if (savedProject) {
                    currentSelectedProject = savedProject;
                }
            } catch (e) {
                console.error('从本地存储获取项目失败:', e);
            }
        }
        // 设置到页面数据中
        this.setData({
            projectList,
            selectedProject: currentSelectedProject
        });
        console.log('项目列表已初始化:', projectList, '当前选中项目:', currentSelectedProject);
    },
    // 新增的初始化页面辅助函数,分离出onLoad中的逻辑以便延迟执行
    initializePage(options, fromLogin) {
        // 检查是否已选择项目
@@ -142,9 +186,12 @@
                    });
                    // 设置 baseUrl
                    const baseUrl = PROJECT_URLS[project];
                    getApp().globalData.baseUrl = baseUrl;
                    getApp().globalData.selectedProject = project;
                    const serverUrl = PROJECT_CONFIG[project]?.serverUrl;
                    if (serverUrl) {
                        getApp().globalData.baseUrl = serverUrl;
                        getApp().globalData.selectedProject = project;
                        console.log('设置baseUrl:', serverUrl);
                    }
                    // 根据项目设置对应的tag
                    const projectConfig = PROJECT_CONFIG[project];
@@ -364,23 +411,36 @@
        const currentProject = getApp().globalData.selectedProject;
        const projectConfig = PROJECT_CONFIG[currentProject];
        // 如果当前项目配置为不需要登录,则提示用户不可解绑
        // 如果当前项目配置为不需要登录,则提示用户并打开项目选择弹窗
        if (projectConfig && !projectConfig.needLogin) {
            wx.showToast({
                title: '当前用户不可解绑',
                icon: 'none',
                duration: 2000
            wx.showModal({
                title: '切换项目',
                content: '是否确定解绑?',
                confirmText: '确认',
                cancelText: '取消',
                success: (res) => {
                    if (res.confirm) {
                        // 显示项目选择弹窗
                        this.setData({
                            showProjectDialog: true
                        });
                    }
                }
            });
            return;
        }
        // 如果已登录,显示解绑确认对话框
        if (getApp().globalData.isLoggedIn) {
            wx.showModal({
                title: '解绑确认',
                content: '确定要解绑当前账号吗?',
                content: '确定要解绑当前账号吗?解绑后将无法使用相关功能,需重新绑定。',
                confirmText: '确认解绑',
                confirmColor: '#e34d59',
                cancelText: '取消',
                success: (res) => {
                    if (res.confirm) {
                        this.unBindPost()
                        this.unBindPost();
                    }
                }
            });
@@ -388,7 +448,7 @@
            wx.showToast({
                title: '还未绑定',
                icon: 'error'
            })
            });
        }
    },
    //轮灌
@@ -939,6 +999,8 @@
    // 处理项目选择确认
    handleProjectConfirm() {
        console.log('开始处理项目选择确认', this.data.selectedProject, this.data.projectList);
        if (!this.data.selectedProject) {
            wx.showToast({
                title: '请选择项目',
@@ -950,7 +1012,11 @@
        // 获取当前已选项目和新选择的项目
        const currentProject = getApp().globalData.selectedProject;
        const newProject = this.data.selectedProject;
        console.log('当前项目:', currentProject, '新选择项目:', newProject);
        console.log('PROJECT_CONFIG 内容:', PROJECT_CONFIG);
        const projectConfig = PROJECT_CONFIG[newProject];
        console.log('选择的项目配置:', projectConfig);
        if (!projectConfig) {
            wx.showToast({
@@ -963,6 +1029,30 @@
        // 检查是否切换了项目(如果当前项目不同于新选择的项目)
        const isProjectChanged = currentProject && currentProject !== newProject;
        // 添加二次确认
        const confirmText = isProjectChanged
            ? `确定要将项目从"${PROJECT_CONFIG[currentProject]?.displayName || '当前项目'}"切换到"${projectConfig.displayName}"吗?`
            : `确定选择"${projectConfig.displayName}"项目吗?`;
        wx.showModal({
            title: isProjectChanged ? '确认切换项目' : '确认选择项目',
            content: confirmText,
            confirmText: isProjectChanged ? '确认切换' : '确认',
            cancelText: '取消',
            success: (res) => {
                if (res.confirm) {
                    // 用户确认选择,继续处理
                    this.processProjectSelection(currentProject, newProject, projectConfig, isProjectChanged);
                } else {
                    // 用户取消,不进行任何操作
                    console.log('用户取消了项目选择');
                }
            }
        });
    },
    // 处理项目选择的后续操作
    processProjectSelection(currentProject, newProject, projectConfig, isProjectChanged) {
        // 如果切换了项目,先清除登录状态
        if (isProjectChanged) {
            console.log(`正在从项目 ${currentProject} 切换到 ${newProject},将清除登录状态`);
@@ -994,13 +1084,21 @@
        // 保存项目选择到本地存储
        storage.setItem('selectedProject', newProject).then(() => {
            // 更新 BASEURL
            const baseUrl = PROJECT_URLS[newProject];
            // 调用setBaseUrl来更新基础URL
            try {
                console.log('尝试设置基础URL,项目:', newProject);
                const result = config.setBaseUrl(newProject);
                console.log('设置基础URL结果:', result);
            } catch (error) {
                console.error('设置基础URL出错:', error);
                // 继续执行,不中断流程
            }
            // 更新全局变量
            getApp().globalData = getApp().globalData || {};
            getApp().globalData.baseUrl = baseUrl;
            getApp().globalData.selectedProject = newProject;
            getApp().globalData.baseUrl = projectConfig.serverUrl;
            getApp().globalData.serverId = projectConfig.serverId;
            // 通过配置对象统一设置项目参数
            getApp().globalData.tag = projectConfig.tag;
@@ -1038,7 +1136,7 @@
                storage.setItem(`${newProject}_params`, params);
            }
            console.log('已切换到项目:', projectConfig.displayName, '域名:', baseUrl, 'tag:', getApp().globalData.tag);
            console.log('已切换到项目:', projectConfig.displayName, '服务器:', projectConfig.serverId, 'tag:', getApp().globalData.tag);
            this.setData({
                showProjectDialog: false
@@ -1595,4 +1693,51 @@
      return `${hours}:${minutes}:${seconds}`;
    },
  
    // 切换项目
    switchProject(e) {
        const project = e.currentTarget.dataset.project;
        if (config.setBaseUrl(project)) {
            this.setData({
                selectedProject: project
            });
            // 保存选择到本地存储
            try {
                wx.setStorageSync('selectedProject', project);
            } catch (e) {
                console.error('保存项目选择失败:', e);
            }
            // 更新全局变量
            const app = getApp();
            if (app && app.globalData) {
                app.globalData.selectedProject = project;
                // 根据项目配置设置相关参数
                const projectConfig = PROJECT_CONFIG[project];
                if (projectConfig) {
                    app.globalData.tag = projectConfig.tag;
                    if (!projectConfig.needLogin) {
                        app.globalData.operator = projectConfig.operatorId;
                        app.globalData.clientId = projectConfig.operatorId;
                        app.globalData.isLoggedIn = true;
                        app.globalData.sessionId = projectConfig.operatorId;
                        // 如果有vcId,也设置
                        if (projectConfig.vcId) {
                            app.globalData.vcId = projectConfig.vcId;
                        }
                    }
                }
            }
            // 重新加载页面数据
            this.initData();
        } else {
            wx.showToast({
                title: '切换项目失败',
                icon: 'none'
            });
        }
    },
})