用户反馈: 员工在企业微信端访问项目详情页时,如果未激活身份,会被重定向到激活页面。但激活完成后,停留在激活页面,无法自动跳转回原来要访问的项目详情页。
期望行为: 激活完成后,自动跳转回原来要访问的项目详情页(四个阶段页面)。
localStorage文件:src/app/custom-wxwork-auth-guard.ts
修改位置:所有跳转到激活页面的地方(共4处)
if (!profile || !profile.get('isActivated')) {
console.log('⚠️ 测试用户未激活,跳转到激活页面');
// 🔥 保存原始URL,激活后跳转回来
localStorage.setItem('returnUrl', state.url);
await router.navigate(['/wxwork', cid, 'activation']);
return false;
}
} catch (err) {
console.log('⚠️ 需要授权,跳转到激活页面');
// 🔥 保存原始URL,激活后跳转回来
localStorage.setItem('returnUrl', state.url);
// 需要授权,跳转到激活页面
await router.navigate(['/wxwork', cid, 'activation']);
return false;
}
if (!userInfo) {
console.log('⚠️ 无用户信息,跳转到激活页面');
// 🔥 保存原始URL,激活后跳转回来
localStorage.setItem('returnUrl', state.url);
await router.navigate(['/wxwork', cid, 'activation']);
return false;
}
console.log('⚠️ 用户未激活,跳转到激活页面');
// 🔥 保存原始URL,激活后跳转回来
localStorage.setItem('returnUrl', state.url);
await router.navigate(['/wxwork', cid, 'activation']);
return false;
文件:src/modules/profile/pages/profile-activation/profile-activation.component.ts
redirectToReturnUrl()(第444-462行)/**
* 🔥 自动跳转回原始URL
*/
private redirectToReturnUrl() {
const returnUrl = localStorage.getItem('returnUrl');
if (returnUrl) {
console.log('🔄 检测到原始URL,准备跳转:', returnUrl);
// 延迟1秒跳转,让用户看到激活成功的提示
setTimeout(() => {
console.log('🚀 跳转到原始URL:', returnUrl);
localStorage.removeItem('returnUrl'); // 清除标记
this.router.navigateByUrl(returnUrl);
}, 1000);
} else {
console.log('ℹ️ 未检测到原始URL,停留在当前页面');
}
}
// 如果已激活,切换到激活后视图
if (this.isActivated) {
this.currentView = 'activated';
// 如果问卷已完成,加载问卷数据
if (this.surveyCompleted) {
await this.loadSurveyData();
}
// 🔥 激活完成后,自动跳转回原始URL
this.redirectToReturnUrl();
}
this.isActivated = true;
this.currentView = 'activated';
console.log('✅ 激活成功!');
// 🔥 激活成功后,自动跳转回原始URL
this.redirectToReturnUrl();
await this.loadSurveyData();
this.currentView = 'survey-result';
// 🔥 问卷完成后,自动跳转回原始URL
this.redirectToReturnUrl();
用户访问: /wxwork/cDL6R1hgSi/project/abc123
↓
守卫检查: 未激活
↓
保存原始URL: localStorage.setItem('returnUrl', '/wxwork/cDL6R1hgSi/project/abc123')
↓
跳转到激活页面: /wxwork/cDL6R1hgSi/activation
↓
用户填写信息并确认激活
↓
激活成功,调用 redirectToReturnUrl()
↓
读取原始URL: '/wxwork/cDL6R1hgSi/project/abc123'
↓
延迟1秒后跳转
↓
清除标记: localStorage.removeItem('returnUrl')
↓
用户看到项目详情页(四个阶段)✅
用户访问: /wxwork/cDL6R1hgSi/project/abc123
↓
守卫检查: 已激活但问卷未完成
↓
允许访问,但激活页面检测到问卷未完成
↓
用户完成问卷
↓
问卷完成后,调用 redirectToReturnUrl()
↓
如果有原始URL,跳转回去
↓
用户看到项目详情页 ✅
用户访问: /wxwork/cDL6R1hgSi/project/abc123
↓
守卫检查: 已激活且问卷已完成
↓
直接允许访问
↓
用户看到项目详情页 ✅
localStorage 持久化存储returnUrl🔐 CustomWxworkAuthGuard 执行,当前路由: /wxwork/cDL6R1hgSi/project/abc123
⚠️ 用户未激活,跳转到激活页面
💾 保存原始URL: /wxwork/cDL6R1hgSi/project/abc123
--- 用户激活 ---
✅ 激活成功!
🔄 检测到原始URL,准备跳转: /wxwork/cDL6R1hgSi/project/abc123
🚀 跳转到原始URL: /wxwork/cDL6R1hgSi/project/abc123
✅ 用户看到项目详情页
✅ 激活成功!
ℹ️ 未检测到原始URL,停留在当前页面
清除激活状态(Parse Dashboard)
isActivated = false访问项目详情页
https://app.fmode.cn/dev/yss/wxwork/cDL6R1hgSi/project/abc123
应该被重定向到激活页面
https://app.fmode.cn/dev/yss/wxwork/cDL6R1hgSi/activation
填写信息并点击"确认身份"
1秒后自动跳转回项目详情页 ✅
看到四个阶段页面 ✅
访问激活页面(已激活但问卷未完成)
点击"填写问卷"
完成问卷
返回激活页面,点击"刷新状态"
1秒后自动跳转回原始URL ✅
returnUrl 会丢失returnUrl 会被覆盖ng build yss-project --base-href=/dev/yss/
obsutil chattri obs://nova-cloud/dev/yss -r -f \
-i=XSUWJSVMZNHLWFAINRZ1 \
-k=P4TyfwfDovVNqz08tI1IXoLWXyEOSTKJRVlsGcV6 \
-e="obs.cn-south-1.myhuaweicloud.com" \
-acl=public-read
hcloud CDN CreateRefreshTasks/v2 \
--cli-region="cn-north-1" \
--refresh_task.urls.1="https://app.fmode.cn/dev/yss/" \
--refresh_task.type="directory" \
--cli-access-key=2BFF7JWXAIJ0UGNJ0OSB \
--cli-secret-key=NaPCiJCGmD3nklCzX65s8mSK1Py13ueyhgepa0s1
src/app/custom-wxwork-auth-guard.ts
src/modules/profile/pages/profile-activation/profile-activation.component.ts
redirectToReturnUrl() 方法docs/employee-activation-debug.md - 激活状态诊断指南docs/fix-employee-activation.js - 激活状态修复脚本docs/quick-fix-activation.js - 快速修复脚本✅ 问题已解决:激活完成后自动跳转回原始URL ✅ 用户体验提升:无需手动返回项目页面 ✅ 兼容性良好:不影响现有激活流程 ✅ 代码简洁:只需添加少量代码即可实现
创建时间:2025-11-28 最后更新:2025-11-28