diff --git a/pages/feedback/index.wxml b/pages/feedback/index.wxml index 1c269a0..82a3db4 100644 --- a/pages/feedback/index.wxml +++ b/pages/feedback/index.wxml @@ -5,15 +5,17 @@ 填写课堂表现并保存到教学反馈记录。 - + - {{errorMessage}} - - 请求编号:{{errorRequestId}} - 复制 - + + + - 重试 diff --git a/pages/feedback/index.wxss b/pages/feedback/index.wxss index d7bd1ea..3427c35 100644 --- a/pages/feedback/index.wxss +++ b/pages/feedback/index.wxss @@ -7,6 +7,76 @@ padding: 0; } +.feedback-error-banner { + flex-direction: column; + align-items: stretch; + gap: 14rpx; +} + +.feedback-error-message { + display: block; +} + +.feedback-error-footer, +.feedback-error-reference { + display: flex; + align-items: center; +} + +.feedback-error-footer { + justify-content: flex-end; + gap: 18rpx; +} + +.feedback-error-reference { + flex: 1; + min-width: 0; + gap: 12rpx; + color: #6e6e73; + font-size: 21rpx; +} + +.feedback-error-reference > text { + min-width: 0; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.feedback-error-copy, +.feedback-error-retry { + display: flex; + flex: none; + align-items: center; + justify-content: center; + height: 56rpx; + margin: 0; + border: 0; + border-radius: 8rpx; + font-size: 23rpx; + line-height: 1; +} + +.feedback-error-copy { + padding: 0; + background: transparent; + color: #6e6e73; + font-weight: 500; +} + +.feedback-error-retry { + min-width: 104rpx; + padding: 0 22rpx; + background: #007aff; + color: #ffffff; + font-weight: 600; +} + +.feedback-error-copy::after, +.feedback-error-retry::after { + border: 0; +} + .feedback-field, .content-field { padding: 24rpx; @@ -323,14 +393,18 @@ .voice-summary-button, .voice-summary-apply-button { + display: flex; + align-items: center; + justify-content: center; width: 100%; height: 72rpx; margin: 0; + padding: 0 20rpx; border: 0; border-radius: 8rpx; font-size: 25rpx; font-weight: 600; - line-height: 72rpx; + line-height: 1; } .voice-summary-button { diff --git a/server/src/error.rs b/server/src/error.rs index e786ef5..1357953 100644 --- a/server/src/error.rs +++ b/server/src/error.rs @@ -92,10 +92,11 @@ impl IntoResponse for ApiError { } impl From for ApiError { - fn from(_: sqlx::Error) -> Self { + fn from(error: sqlx::Error) -> Self { tracing::error!( event = "database_query_failed", error_class = "database_query_failed", + error = %error, "database query failed" ); Self::Internal diff --git a/utils/api.ts b/utils/api.ts index e06816d..18fc811 100644 --- a/utils/api.ts +++ b/utils/api.ts @@ -192,6 +192,10 @@ export function getApiErrorMessage(error: unknown): string { if (error.statusCode === 401) return '登录状态已失效,请重试' if (error.statusCode === 404) return '请求的数据不存在或无权访问' if (error.statusCode === 503 && error.message.includes('database')) return '后端尚未配置数据库连接' + if (error.statusCode && error.statusCode >= 500) return '服务暂时无法完成操作,请稍后重试' + if (error.message.toLowerCase() === 'internal server error') { + return '服务暂时无法完成操作,请稍后重试' + } return error.message }