mirror of
https://gitee.com/bootx/dax-pay-ui
synced 2026-08-10 23:01:59 +08:00
feat(offline): 服务不可用页记录原页面, 网络恢复后重试回到原页而非首页
This commit is contained in:
@@ -115,7 +115,14 @@ function setupAccessGuard(router: Router) {
|
||||
return { path: LOGIN_PATH, replace: true };
|
||||
}
|
||||
// 网络错误 / 后端服务不可用: token 仍在, 跳服务不可用提示页, 保留登录态供用户手动刷新重试
|
||||
return { path: '/service-unavailable', replace: true };
|
||||
// 中文注释:记录用户原本想访问的页面,网络恢复后重试可回到该页而非首页;
|
||||
// 排除自身路径,避免 redirect 指向 /service-unavailable 形成循环
|
||||
const redirectPath = to.path === '/service-unavailable' ? HOME_PATH : to.fullPath;
|
||||
return {
|
||||
path: '/service-unavailable',
|
||||
query: { redirect: encodeURIComponent(redirectPath) },
|
||||
replace: true,
|
||||
};
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@@ -1,18 +1,26 @@
|
||||
<script lang="ts" setup>
|
||||
import { useRoute, useRouter } from 'vue-router';
|
||||
|
||||
import { Fallback } from '@vben/common-ui';
|
||||
import { useRouter } from 'vue-router';
|
||||
|
||||
import { $t } from '#/locales';
|
||||
import { HOME_PATH } from '#/router/routes';
|
||||
|
||||
defineOptions({ name: 'FallbackOfflineDemo' });
|
||||
|
||||
const route = useRoute();
|
||||
const router = useRouter();
|
||||
|
||||
// 重试连接: 跳回首页重新走认证流程
|
||||
// 读取重试后应跳转的路径:优先使用进入本页时记录的原页面(query.redirect),否则回首页
|
||||
function getRedirectPath(): string {
|
||||
const redirect = route.query.redirect;
|
||||
return redirect ? decodeURIComponent(redirect as string) : HOME_PATH;
|
||||
}
|
||||
|
||||
// 重试连接: 回到原页面重新走认证流程
|
||||
// (后端已恢复则正常进入系统, 仍不可用则由守卫重新跳回本页, 不会死循环)
|
||||
function retry() {
|
||||
router.replace(HOME_PATH);
|
||||
router.replace(getRedirectPath());
|
||||
}
|
||||
</script>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user