From 30afe5f7c3013f1a9e7d94e60f60ecc7b94df3bc Mon Sep 17 00:00:00 2001 From: zuoxiao <zuoxiao> Date: 星期一, 07 四月 2025 18:09:04 +0800 Subject: [PATCH] 优化用户数据获取逻辑,添加项目登录需求检查;更新首页WXML,增加学校项目选项,提升用户体验。 --- pages/home/home.js | 323 ++++++++++++++++++++++++++++++++++------------------- 1 files changed, 204 insertions(+), 119 deletions(-) diff --git a/pages/home/home.js b/pages/home/home.js index dd86186..b139784 100644 --- a/pages/home/home.js +++ b/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鍜宑lientId + needLogin: false // 涓嶉渶瑕佺櫥褰� + }, + TEST: { + tag: 'ym', + displayName: '娴嬭瘯椤圭洰', + operatorId: '2025032411245000006', // 缁熶竴ID鐢ㄤ簬operator鍜宑lientId + vcId: '2024122617295800009', + needLogin: false // 涓嶉渶瑕佺櫥褰� + }, + SCHOOL: { + tag: 'XX', + displayName: '瀛︽牎椤圭洰', + operatorId: '2025040215305200006', // 缁熶竴ID鐢ㄤ簬operator鍜宑lientId + needLogin: true // 涓嶉渶瑕佺櫥褰� + } +}; + Page({ /** @@ -36,7 +65,8 @@ selectedProject: '', avatarTapCount: 0, isFromLogin: false, - showTipDialog: '' + showTipDialog: '', + projectConfig: PROJECT_CONFIG // 娣诲姞椤圭洰閰嶇疆鍒癲ata涓� }, openValve: function (e) { @@ -78,18 +108,6 @@ } - }, - //鑾峰彇鐢ㄦ埛鏁版嵁 - getUserData() { - get('/items') - .then((data) => { - this.setData({ - items: data - }); - }) - .catch((error) => { - console.error('Failed to fetch data:', error); - }); }, @@ -153,44 +171,39 @@ getApp().globalData.selectedProject = project; // 鏍规嵁椤圭洰璁剧疆瀵瑰簲鐨則ag - if (project === 'JYG') { - getApp().globalData.tag = 'ym'; // 鍢夊唱鍏抽」鐩搴攖ag涓簓m + 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涓簃q - 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涓簍est - 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(); - }); + } + + // 鏍规嵁椤圭洰璁剧疆瀵瑰簲鐨刼perator鍜宑lientId + if (projectConfig && projectConfig.operatorId) { + getApp().globalData.operator = projectConfig.operatorId; + getApp().globalData.clientId = projectConfig.operatorId; + getApp().globalData.isLoggedIn = true; + getApp().globalData.sessionId = projectConfig.operatorId; + + // 濡傛灉鏈塿cId锛屼篃璁剧疆 + 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 +232,7 @@ console.log('鑾峰彇瀛樺偍鏁版嵁涓柇:', error.message); // 濡傛灉鏄粠鐧诲綍椤佃繑鍥炴垨宸茬櫥褰曪紝涓嶅啀璺宠浆 - if (fromLogin || getApp().globalData.isLoggedIn) { + if (fromLogin) { console.log('浠庣櫥褰曢〉杩斿洖鎴栧凡鐧诲綍锛岀户缁垵濮嬪寲椤甸潰'); this.continueInitPage(options); return; @@ -290,12 +303,6 @@ // 鍐嶆纭鏄惁浠庣櫥褰曢〉杩斿洖 if (this.getFromLogin()) { console.log('妫�娴嬪埌浠庣櫥褰曢〉杩斿洖鐨勬爣璁帮紝涓嶈繘琛岀櫥褰曟鏌�'); - return; - } - - // 鍐嶆妫�鏌ュ叏灞�鐧诲綍鐘舵�� - if (getApp().globalData.isLoggedIn) { - console.log('妫�娴嬪埌鍏ㄥ眬鐧诲綍鐘舵�侊紝涓嶈繘琛岀櫥褰曟鏌�'); return; } @@ -373,6 +380,20 @@ }, //瑙g粦鐢ㄦ埛 unbind() { + // 妫�鏌ュ綋鍓嶉」鐩槸鍚﹂渶瑕佺櫥褰� + const currentProject = getApp().globalData.selectedProject; + const projectConfig = PROJECT_CONFIG[currentProject]; + + // 濡傛灉褰撳墠椤圭洰閰嶇疆涓轰笉闇�瑕佺櫥褰曪紝鍒欐彁绀虹敤鎴蜂笉鍙В缁� + if (projectConfig && !projectConfig.needLogin) { + wx.showToast({ + title: '褰撳墠鐢ㄦ埛涓嶅彲瑙g粦', + icon: 'none', + duration: 2000 + }); + return; + } + if (getApp().globalData.isLoggedIn) { wx.showModal({ title: '瑙g粦纭', @@ -389,7 +410,6 @@ icon: 'error' }) } - }, //杞亴 irrigation() { @@ -633,11 +653,11 @@ } } else { // 鍏朵粬閿欒锛屾樉绀洪敊璇俊鎭� - // wx.showToast({ - // title: err.msg || '鑾峰彇鐢ㄦ埛淇℃伅澶辫触', - // icon: 'none', - // duration: 3000 - // }); + wx.showToast({ + title: err.msg || '鑾峰彇鐢ㄦ埛淇℃伅澶辫触', + icon: 'none', + duration: 3000 + }); } }); }, @@ -789,12 +809,25 @@ 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(); + + // 鍙湁闇�瑕佺櫥褰曠殑椤圭洰鎵嶈皟鐢╣etUserDataBySession + if (needLogin) { + console.log('initData: 褰撳墠椤圭洰闇�瑕佺櫥褰曪紝鑾峰彇鐢ㄦ埛鏁版嵁'); + this.getUserDataBySession(); + } else { + console.log('initData: 褰撳墠椤圭洰涓嶉渶瑕佺櫥褰曪紝璺宠繃鑾峰彇鐢ㄦ埛鏁版嵁'); + } + this.getOpenList(); return; } @@ -817,8 +850,15 @@ console.error('userData瑙f瀽澶辫触:', e); } } - // 鏃犺濡備綍閮藉皾璇曡幏鍙栫敤鎴蜂俊鎭拰寮�闃�鍒楄〃 - this.getUserDataBySession(); + + // 鍙湁闇�瑕佺櫥褰曠殑椤圭洰鎵嶈皟鐢╣etUserDataBySession + if (needLogin) { + console.log('initData: 褰撳墠椤圭洰闇�瑕佺櫥褰曪紝鑾峰彇鐢ㄦ埛鏁版嵁'); + this.getUserDataBySession(); + } else { + console.log('initData: 褰撳墠椤圭洰涓嶉渶瑕佺櫥褰曪紝璺宠繃鑾峰彇鐢ㄦ埛鏁版嵁'); + } + this.getOpenList(); }) .catch((err) => { @@ -829,7 +869,14 @@ console.log('initData:catch: 妫�娴嬪埌浠庣櫥褰曢〉杩斿洖鐨勬爣璁帮紝鍙幏鍙栧紑闃�鍒楄〃'); this.getOpenList(); } else { - this.getUserDataBySession(); + // 鍙湁闇�瑕佺櫥褰曠殑椤圭洰鎵嶈皟鐢╣etUserDataBySession + if (needLogin) { + console.log('initData:catch: 褰撳墠椤圭洰闇�瑕佺櫥褰曪紝鑾峰彇鐢ㄦ埛鏁版嵁'); + this.getUserDataBySession(); + } else { + console.log('initData:catch: 褰撳墠椤圭洰涓嶉渶瑕佺櫥褰曪紝璺宠繃鑾峰彇鐢ㄦ埛鏁版嵁'); + } + this.getOpenList(); } }); @@ -841,7 +888,14 @@ console.log('initData:else: 妫�娴嬪埌浠庣櫥褰曢〉杩斿洖鐨勬爣璁帮紝鍙幏鍙栧紑闃�鍒楄〃'); this.getOpenList(); } else { - this.getUserDataBySession(); + // 鍙湁闇�瑕佺櫥褰曠殑椤圭洰鎵嶈皟鐢╣etUserDataBySession + if (needLogin) { + console.log('initData:else: 褰撳墠椤圭洰闇�瑕佺櫥褰曪紝鑾峰彇鐢ㄦ埛鏁版嵁'); + this.getUserDataBySession(); + } else { + console.log('initData:else: 褰撳墠椤圭洰涓嶉渶瑕佺櫥褰曪紝璺宠繃鑾峰彇鐢ㄦ埛鏁版嵁'); + } + this.getOpenList(); } } @@ -853,8 +907,14 @@ console.log('initData:error: 妫�娴嬪埌浠庣櫥褰曢〉杩斿洖鐨勬爣璁帮紝鍙幏鍙栧紑闃�鍒楄〃'); this.getOpenList(); } else { - // 鍑洪敊鏃朵粛灏濊瘯鑾峰彇鏁版嵁 - this.getUserDataBySession(); + // 鍙湁闇�瑕佺櫥褰曠殑椤圭洰鎵嶈皟鐢╣etUserDataBySession + if (needLogin) { + console.log('initData:error: 褰撳墠椤圭洰闇�瑕佺櫥褰曪紝鑾峰彇鐢ㄦ埛鏁版嵁'); + this.getUserDataBySession(); + } else { + console.log('initData:error: 褰撳墠椤圭洰涓嶉渶瑕佺櫥褰曪紝璺宠繃鑾峰彇鐢ㄦ埛鏁版嵁'); + } + this.getOpenList(); } } @@ -905,9 +965,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 +1010,6 @@ // 淇濆瓨椤圭洰閫夋嫨鍒版湰鍦板瓨鍌� storage.setItem('selectedProject', newProject).then(() => { // 鏇存柊 BASEURL - const { - PROJECT_URLS - } = require('../../api/config.js'); const baseUrl = PROJECT_URLS[newProject]; // 鏇存柊鍏ㄥ眬鍙橀噺 @@ -954,49 +1017,43 @@ getApp().globalData.baseUrl = baseUrl; getApp().globalData.selectedProject = newProject; - // 鏍规嵁椤圭洰璁剧疆瀵瑰簲鐨則ag鍜宑lientId - if (newProject === 'JYG') { - getApp().globalData.tag = 'ym'; // 鍢夊唱鍏抽」鐩搴攖ag涓簓m - this.setData({ - userName: "鍢夊唱鍏抽」鐩�" - }); - } else if (newProject === 'MQ') { - getApp().globalData.tag = 'mq'; // 姘戝嫟椤圭洰瀵瑰簲tag涓簃q - getApp().globalData.operator = '2025033115305200006'; - getApp().globalData.clientId = '2025033115305200006'; + // 閫氳繃閰嶇疆瀵硅薄缁熶竴璁剧疆椤圭洰鍙傛暟 + getApp().globalData.tag = projectConfig.tag; + + // 璁剧疆鐢ㄦ埛鐣岄潰鏄剧ず鐨勯」鐩悕绉� + this.setData({ + userName: projectConfig.displayName + }); + + // 瀵逛簬涓嶉渶瑕佺櫥褰曠殑椤圭洰锛岀洿鎺ヨ缃畂perator鍜宑lientId + 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; + + // 濡傛灉鏈塿cId锛屼篃璁剧疆 + 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涓簍est - 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 +1061,7 @@ // 鏄剧ず鍒囨崲鎴愬姛鎻愮ず wx.showToast({ - title: `宸查�夋嫨${projectName}`, + title: `宸查�夋嫨${projectConfig.displayName}`, icon: 'success', duration: 2000 }); @@ -1037,6 +1094,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 +1164,12 @@ return; } + // 妫�鏌ラ」鐩槸鍚﹂渶瑕佺櫥褰� + if (currentProject && PROJECT_CONFIG[currentProject] && !PROJECT_CONFIG[currentProject].needLogin) { + console.log('鏈�缁堟鏌�: 褰撳墠椤圭洰涓嶉渶瑕佺櫥褰�:', currentProject); + return; + } + console.log('纭闇�瑕佽烦杞埌鐧诲綍椤�'); // 璺宠浆鍓嶅啀娆℃鏌ョ櫥褰曢〉闈复鏃舵爣璁� @@ -1125,6 +1195,12 @@ // 鍐嶆妫�鏌ユ槸鍚﹀凡浠庣櫥褰曢〉杩斿洖 if (this.getFromLogin()) { console.log('閿欒澶勭悊: 宸蹭粠鐧诲綍椤佃繑鍥烇紝涓嶅啀璺宠浆'); + return; + } + + // 妫�鏌ラ」鐩槸鍚﹂渶瑕佺櫥褰� + if (currentProject && PROJECT_CONFIG[currentProject] && !PROJECT_CONFIG[currentProject].needLogin) { + console.log('閿欒澶勭悊: 褰撳墠椤圭洰涓嶉渶瑕佺櫥褰�:', currentProject); return; } @@ -1213,6 +1289,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: '姝e湪鐧诲綍璇风◢鍊�...', @@ -1251,8 +1334,10 @@ getApp().globalData.isLoggedIn = true; // 璁剧疆姝g‘鐨勯」鐩畉ag - 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 +1347,14 @@ // 淇濆瓨userData淇℃伅锛屽寘鍚玸essionId鍜宼ag 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 => { -- Gitblit v1.8.0