| app/App.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| app/pagesTask/detail.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| app/permission.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| app/utils/wechat.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| ruoyi-admin/src/main/resources/application.yml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TaskStatusSyncServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
app/App.vue
@@ -68,7 +68,7 @@ this.updateUnreadMessageBadge() // 重新启动轮询(如果之前已停止) if (!this.messagePollingTimer) { this.startMessagePolling() // this.startMessagePolling() } } }, @@ -99,6 +99,28 @@ try { if (!getToken()) { console.log('用户未登录,准备跳转到登录页面') // 保存目标页面用于登录后跳转 if (options && options.path && options.path !== 'pages/login' && options.path !== 'pages/qylogin') { // 构造完整的路径和查询参数 let fullPath = '/' + options.path; if (options.query) { const queryString = Object.keys(options.query).map(key => `${key}=${encodeURIComponent(options.query[key])}`).join('&'); if (queryString) { fullPath += '?' + queryString; } } // 保存目标URL到本地存储 try { uni.setStorageSync('targetUrl', fullPath); } catch (e) { console.error('保存目标URL失败:', e); } } // 使用工具类根据环境自动跳转到合适的登录页面 redirectToLoginByEnvironment(options, this.$tab); } else { app/pagesTask/detail.vue
@@ -702,7 +702,16 @@ // 返回上一页 goBack() { uni.navigateBack() // 检查是否有页面可以返回 uni.navigateBack({ delta: 1, fail: () => { // 如果无法返回,则跳转到任务列表页面 uni.switchTab({ url: '/pages/task/index' }) } }) }, // 处理编辑按钮 app/permission.js
@@ -22,7 +22,10 @@ // 保存目标页面URL,用于登录后跳转 function saveTargetUrl(url) { try { uni.setStorageSync('targetUrl', url) // 如果URL已经是/pages/login或/pages/qylogin,则不保存 if (url && !url.startsWith('/pages/login') && !url.startsWith('/pages/qylogin')) { uni.setStorageSync('targetUrl', url) } } catch (e) { console.error('保存目标URL失败:', e) } app/utils/wechat.js
@@ -18,8 +18,18 @@ resolve(isWxWork); } catch (e) { console.error('获取系统信息失败:', e); // fallback检测 resolve(false); // fallback检测:尝试使用wx.qy对象判断 try { if (typeof wx !== 'undefined' && wx.qy) { console.log('通过wx.qy对象检测到企业微信环境'); resolve(true); } else { resolve(false); } } catch (e2) { console.error('fallback检测也失败:', e2); resolve(false); } } // #endif @@ -87,9 +97,25 @@ export function redirectToQyLogin(options, tab) { try { let url = '/pages/qylogin'; if (options && options.query) { // 保存目标URL用于登录后跳转 if (options && options.path && options.path !== 'pages/qylogin') { // 构造完整的路径和查询参数 let fullPath = '/' + options.path; if (options.query) { const queryString = Object.keys(options.query).map(key => `${key}=${encodeURIComponent(options.query[key])}`).join('&'); if (queryString) { fullPath += '?' + queryString; } } // 添加redirect参数 const separator = fullPath.includes('?') ? '&' : '?'; url += `${separator}redirect=${encodeURIComponent(fullPath)}`; } else if (options && options.query) { url = buildUrlWithParams(url, options.query); } console.log('跳转到企业微信登录页面:', url); tab.reLaunch(url); } catch (e) { ruoyi-admin/src/main/resources/application.yml
@@ -58,7 +58,7 @@ basename: i18n/messages profiles: # 环境 dev|test|prod active: dev active: prod # 文件上传 servlet: multipart: ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TaskStatusSyncServiceImpl.java
@@ -114,7 +114,7 @@ try { int totalSuccessCount = 0; int pageSize = 200; // 每页200条 int pageSize = 10; // 每页200条 int offset = 0; while (true) {