From 61e89d748cc7f5456c20866e672a4bde153534f1 Mon Sep 17 00:00:00 2001
From: zuoxiao <zuoxiao>
Date: 星期一, 21 四月 2025 17:18:53 +0800
Subject: [PATCH] 优化项目配置,重构项目URL管理逻辑,改为使用动态配置;更新灌溉组详情页面,添加详细信息展示和请求逻辑,提升用户体验;更新首页项目选择器,支持动态项目列表展示。

---
 pages/home/home.js |  185 +++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 165 insertions(+), 20 deletions(-)

diff --git a/pages/home/home.js b/pages/home/home.js
index 02da0b4..9f9c353 100644
--- a/pages/home/home.js
+++ b/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, // 娣诲姞椤圭洰閰嶇疆鍒癲ata涓�
-        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() {
+        // 灏哖ROJECT_CONFIG瀵硅薄杞崲涓烘暟缁勶紝鏂逛究鍦ㄨ鍥句腑閬嶅巻
+        const projectList = Object.entries(PROJECT_CONFIG).map(([key, config]) => ({
+            key: key, // 浣跨敤key浣滀负椤圭洰鏍囪瘑(JYG銆丮Q绛�)
+            tag: config.tag, // 淇濈暀tag瀛楁锛堝師閰嶇疆涓凡鏈夌殑鏍囪瘑锛屽ym銆乵q绛夛級
+            displayName: config.displayName, // 鏄剧ず鍚嶇О
+            ...config // 鍏朵粬閰嶇疆灞炴��
+        }));
+        
+        // 鑾峰彇褰撳墠宸查�夋嫨鐨勯」鐩紝榛樿涓篔YG
+        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);
+                    }
 
                     // 鏍规嵁椤圭洰璁剧疆瀵瑰簲鐨則ag
                     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: '褰撳墠鐢ㄦ埛涓嶅彲瑙g粦',
-                icon: 'none',
-                duration: 2000
+            wx.showModal({
+                title: '鍒囨崲椤圭洰',
+                content: '鏄惁纭畾瑙g粦锛�',
+                confirmText: '纭',
+                cancelText: '鍙栨秷',
+                success: (res) => {
+                    if (res.confirm) {
+                        // 鏄剧ず椤圭洰閫夋嫨寮圭獥
+                        this.setData({
+                            showProjectDialog: true
+                        });
+                    }
+                }
             });
             return;
         }
 
+        // 濡傛灉宸茬櫥褰曪紝鏄剧ず瑙g粦纭瀵硅瘽妗�
         if (getApp().globalData.isLoggedIn) {
             wx.showModal({
                 title: '瑙g粦纭',
-                content: '纭畾瑕佽В缁戝綋鍓嶈处鍙峰悧锛�',
+                content: '纭畾瑕佽В缁戝綋鍓嶈处鍙峰悧锛熻В缁戝悗灏嗘棤娉曚娇鐢ㄧ浉鍏冲姛鑳斤紝闇�閲嶆柊缁戝畾銆�',
+                confirmText: '纭瑙g粦',
+                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(`姝e湪浠庨」鐩� ${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;
+                        // 濡傛灉鏈塿cId锛屼篃璁剧疆
+                        if (projectConfig.vcId) {
+                            app.globalData.vcId = projectConfig.vcId;
+                        }
+                    }
+                }
+            }
+            
+            // 閲嶆柊鍔犺浇椤甸潰鏁版嵁
+            this.initData();
+        } else {
+            wx.showToast({
+                title: '鍒囨崲椤圭洰澶辫触',
+                icon: 'none'
+            });
+        }
+    },
 })
\ No newline at end of file

--
Gitblit v1.8.0