From 5d31cb5f1fb32a478d5b751ebfe97d47db890778 Mon Sep 17 00:00:00 2001
From: zhou zhou <3272660260@qq.com>
Date: 星期三, 01 四月 2026 14:17:42 +0800
Subject: [PATCH] #前端
---
rsf-design/src/components/core/layouts/art-page-content/index.vue | 58 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 57 insertions(+), 1 deletions(-)
diff --git a/rsf-design/src/components/core/layouts/art-page-content/index.vue b/rsf-design/src/components/core/layouts/art-page-content/index.vue
index 5b7da73..b98d865 100644
--- a/rsf-design/src/components/core/layouts/art-page-content/index.vue
+++ b/rsf-design/src/components/core/layouts/art-page-content/index.vue
@@ -14,7 +14,15 @@
</div>
</div>
- <RouterView v-if="isRefresh" v-slot="{ Component, route }" :style="contentStyle">
+ <div v-if="routeRenderError" class="art-page-view art-route-state">
+ <div class="art-route-state__panel">
+ <div class="art-route-state__title">椤甸潰鍔犺浇澶辫触</div>
+ <div class="art-route-state__desc">{{ routeRenderError }}</div>
+ <ElButton type="primary" @click="reloadCurrentRoute">閲嶆柊鍔犺浇</ElButton>
+ </div>
+ </div>
+
+ <RouterView v-else-if="isRefresh" v-slot="{ Component, route }" :style="contentStyle">
<!-- 缂撳瓨璺敱鍔ㄧ敾 -->
<Transition :name="showTransitionMask ? '' : actualTransition" mode="out-in" appear>
<KeepAlive :max="10" :exclude="keepAliveExclude">
@@ -61,6 +69,7 @@
const isOpenRouteInfo = import.meta.env.VITE_OPEN_ROUTE_INFO
const showTransitionMask = ref(false)
const isFirstLoad = ref(true)
+ const routeRenderError = ref('')
const isFullPage = computed(() => route.matched.some((r) => r.meta?.isFullPage))
const prevIsFullPage = ref(isFullPage.value)
const actualTransition = computed(() => {
@@ -103,10 +112,57 @@
isRefresh.value = true
})
}
+ const reloadCurrentRoute = () => {
+ routeRenderError.value = ''
+ reload()
+ }
watch(refresh, reload, { flush: 'post' })
+ watch(
+ () => route.fullPath,
+ () => {
+ routeRenderError.value = ''
+ }
+ )
+ onErrorCaptured((error) => {
+ routeRenderError.value = error instanceof Error ? error.message : String(error || '椤甸潰娓叉煋寮傚父')
+ return false
+ })
onMounted(() => {
nextTick(() => {
isFirstLoad.value = false
})
})
</script>
+
+<style scoped>
+ .art-route-state {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ min-height: 320px;
+ }
+
+ .art-route-state__panel {
+ width: min(560px, 100%);
+ padding: 28px 32px;
+ background: var(--default-box-color);
+ border: 1px solid var(--art-card-border);
+ border-radius: calc(var(--custom-radius) + 6px);
+ box-shadow: 0 8px 24px rgba(15, 23, 42, 0.04);
+ }
+
+ .art-route-state__title {
+ font-size: 18px;
+ font-weight: 600;
+ color: var(--art-text-primary);
+ }
+
+ .art-route-state__desc {
+ margin-top: 8px;
+ margin-bottom: 16px;
+ color: var(--art-text-secondary);
+ line-height: 1.7;
+ word-break: break-word;
+ }
+
+</style>
--
Gitblit v1.9.1