feat: add qlrepo sync crontab -- fix lint error

This commit is contained in:
engigu
2026-03-19 11:19:59 +08:00
parent cd818f7b0c
commit 4ffe09993c
2 changed files with 7 additions and 34 deletions
+3 -30
View File
@@ -1,14 +1,13 @@
<script setup lang="ts">
import { ref, onMounted, watch } from 'vue'
import { ref, onMounted } from 'vue'
import { useRoute } from 'vue-router'
import { TASK_STATUS, TASK_TYPE } from '@/constants'
import { TASK_STATUS } from '@/constants'
import { Button } from '@/components/ui/button'
import { Input } from '@/components/ui/input'
import Pagination from '@/components/Pagination.vue'
import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/components/ui/select'
import {
RefreshCw, X, Search, GitBranch, Terminal,
CheckCircle2, XCircle, AlertCircle, Ban, Clock, Zap as ZapIcon, Check, Trash2, Maximize2
RefreshCw, X, Search, Trash2, Maximize2
} from 'lucide-vue-next'
import LogViewer from './LogViewer.vue'
import { api, type TaskLog } from '@/api'
@@ -25,8 +24,6 @@ import {
} from '@/components/ui/alert-dialog'
import { toast } from 'vue-sonner'
import { useSiteSettings } from '@/composables/useSiteSettings'
import TextOverflow from '@/components/TextOverflow.vue'
import { useTheme } from '@/composables/useTheme'
const route = useRoute()
const { pageSize } = useSiteSettings()
@@ -46,8 +43,6 @@ const showClearDialog = ref(false)
let searchTimer: ReturnType<typeof setTimeout> | null = null
const { resolvedTheme } = useTheme()
async function loadLogs() {
try {
const params: { page: number; page_size: number; task_id?: string; task_name?: string; status?: string } = {
@@ -97,21 +92,6 @@ function closeDetail() {
selectedLog.value = null
}
const isStopping = ref(false)
async function stopTask() {
if (!selectedLog.value || isStopping.value) return
try {
isStopping.value = true
await api.tasks.stop(selectedLog.value.id)
toast.success('停止请求已发送')
} catch (err: any) {
toast.error(err.message || '停止失败')
} finally {
isStopping.value = false
}
}
function formatDuration(ms: number): string {
if (ms < 1000) return `${ms}毫秒`
if (ms < 60000) return `${(ms / 1000).toFixed(1)}`
@@ -170,10 +150,6 @@ function getStatusBadgeClass(status: string) {
}
}
function getTaskTypeTitle(type: string) {
return type === TASK_TYPE.REPO ? '仓库同步' : '普通任务'
}
onMounted(() => {
const taskIdParam = route.query.task_id
if (taskIdParam) {
@@ -234,7 +210,6 @@ onMounted(() => {
<div class="flex-1 flex flex-col lg:flex-row gap-4 min-h-0">
<!-- 日志列表 -->
<div class="flex-1 min-w-0 rounded-lg border bg-card overflow-hidden flex flex-col">
<!-- 小屏表头 (省略) -->
<div class="divide-y flex-1 overflow-y-auto">
<div v-if="logs.length === 0" class="text-sm text-muted-foreground text-center py-8">
暂无日志
@@ -243,7 +218,6 @@ onMounted(() => {
'cursor-pointer hover:bg-muted/30 transition-colors group',
selectedLog?.id === log.id && 'bg-accent/50'
]" @click="selectLog(log)">
<!-- 日志行内容 (保持原样) -->
<div class="flex items-center gap-4 px-4 py-3">
<span class="w-16 shrink-0 text-muted-foreground text-sm">#{{ total - (currentPage - 1) * pageSize - index }}</span>
<span class="w-36 shrink-0 font-medium truncate text-sm">{{ log.task_name }}</span>
@@ -278,7 +252,6 @@ onMounted(() => {
</div>
</div>
<div class="flex-1 overflow-y-auto p-4 space-y-4">
<!-- 详情信息 (任务名称, 状态, 耗时, 命令等) -->
<div class="grid grid-cols-2 gap-y-3 text-sm">
<span class="text-muted-foreground">任务名称</span>
<span class="text-right font-medium">{{ selectedLog.task_name }}</span>
+4 -4
View File
@@ -212,9 +212,9 @@ function submitQlImport() {
// form task name
let name = '同步 '
try {
const urlPaths = args[2].split('/')
if (urlPaths.length > 0) {
name += urlPaths[urlPaths.length - 1].replace('.git', '')
const urlPaths = args[2]?.split('/')
if (urlPaths && urlPaths.length > 0) {
name += urlPaths[urlPaths.length - 1]?.replace('.git', '') || ''
} else {
name += '未命名仓库'
}
@@ -372,7 +372,7 @@ async function loadAgents() {
async function save() {
if (repoConfig.value.auto_add_cron) {
if (selectedLangs.value.length === 0 || !selectedLangs.value[0].name) {
if (selectedLangs.value.length === 0 || !selectedLangs.value[0]?.name) {
toast.error('您开启了“自动添加任务”,请先至少添加并选择一个运行语言环境和版本')
return
}