diff --git a/frontend/src/views/Process.vue b/frontend/src/views/Process.vue index a844cc7c..d4ab0bc5 100644 --- a/frontend/src/views/Process.vue +++ b/frontend/src/views/Process.vue @@ -216,7 +216,12 @@
-

{{ error }}

+

{{ error }}

+
+

请尝试以下操作:

+ + +
@@ -573,12 +578,23 @@ const initProject = async () => { } } +// 错误恢复操作 +const retryFromError = () => { + error.value = '' + router.push({ name: 'Home' }) +} + +const goHome = () => { + error.value = '' + router.push({ name: 'Home' }) +} + // 处理新建项目 - 调用 ontology/generate API const handleNewProject = async () => { const pending = getPendingUpload() if (!pending.isPending || pending.files.length === 0) { - error.value = '没有待上传的文件,请返回首页重新操作' + error.value = '没有待上传的文件。页面刷新后文件会丢失,请返回首页重新上传文档。' loading.value = false return } @@ -621,7 +637,13 @@ const handleNewProject = async () => { } } catch (err) { console.error('Handle new project error:', err) - error.value = '项目初始化失败: ' + (err.message || '未知错误') + if (err.message === 'Network Error') { + error.value = '网络连接失败:无法连接到后端服务器。请检查网络连接,或返回首页重试。' + } else if (err.code === 'ECONNABORTED') { + error.value = '请求超时:本体生成耗时过长。请返回首页重新提交,或稍后再试。' + } else { + error.value = '项目初始化失败: ' + (err.message || '未知错误') + '。请返回首页重试。' + } } finally { loading.value = false } @@ -1350,6 +1372,50 @@ onUnmounted(() => { left: 50%; transform: translate(-50%, -50%); text-align: center; + max-width: 400px; + padding: 24px; +} + +.graph-error .error-main { + font-size: 14px; + line-height: 1.6; + margin-bottom: 16px; + color: var(--ui-text); +} + +.graph-error .error-actions { + display: flex; + flex-direction: column; + align-items: center; + gap: 8px; +} + +.graph-error .error-hint { + font-size: 12px; + color: var(--ui-muted); + margin-bottom: 4px; +} + +.graph-error .retry-btn { + padding: 8px 20px; + border: 1px solid var(--ui-border); + border-radius: 6px; + background: var(--ui-surface); + color: var(--ui-text); + cursor: pointer; + font-size: 13px; + width: 180px; + transition: all 0.2s; +} + +.graph-error .retry-btn:hover { + background: var(--ui-surface-strong); +} + +.graph-error .retry-btn.secondary { + background: transparent; + border-color: var(--ui-border); + color: var(--ui-muted); } .loading-animation {