diff --git a/frontend/src/views/task/TaskCenter.vue b/frontend/src/views/task/TaskCenter.vue index 402ac67..f229aeb 100644 --- a/frontend/src/views/task/TaskCenter.vue +++ b/frontend/src/views/task/TaskCenter.vue @@ -240,6 +240,31 @@ function selectTask(taskId: string) { void loadLogs(taskId) } +function scrollToBottom() { + if (!autoScroll.value) return + + nextTick(() => { + if (logContainerRef.value) { + logContainerRef.value.scrollTop = logContainerRef.value.scrollHeight + } + }) +} + +function handleScroll() { + if (!logContainerRef.value) return + + const { scrollTop, scrollHeight, clientHeight } = logContainerRef.value + const distanceFromBottom = scrollHeight - scrollTop - clientHeight + + // 距离底部小于 50px 时认为在底部,恢复自动滚动 + if (distanceFromBottom < 50) { + autoScroll.value = true + } else if (distanceFromBottom > 100) { + // 用户向上滚动超过 100px 时暂停自动滚动 + autoScroll.value = false + } +} + function refreshCurrent() { void loadTasks() } diff --git a/server/internal/handler/context.go b/server/internal/handler/context.go index d138dda..e28e719 100644 --- a/server/internal/handler/context.go +++ b/server/internal/handler/context.go @@ -18,8 +18,6 @@ func AuthMiddleware(cfg config.Config) gin.HandlerFunc { tokenValue := "" if strings.HasPrefix(value, "Bearer ") { tokenValue = strings.TrimPrefix(value, "Bearer ") - } else { - tokenValue = strings.TrimSpace(c.Query("access_token")) } if tokenValue == "" { c.AbortWithStatusJSON(http.StatusUnauthorized, gin.H{"error": "missing bearer token"})