Files
urldb/web/components/Admin/NewHeader.vue

147 lines
5.3 KiB
Vue
Raw Normal View History

2025-08-07 18:47:26 +08:00
<template>
<header class="bg-white dark:bg-gray-800 shadow-sm border-b border-gray-200 dark:border-gray-700">
<div class="flex items-center justify-between px-6 py-4">
<!-- 左侧Logo和标题 -->
<div class="flex items-center">
<NuxtLink to="/admin" class="flex items-center space-x-3">
<div class="w-8 h-8 bg-blue-600 rounded-lg flex items-center justify-center">
<i class="fas fa-shield-alt text-white text-sm"></i>
</div>
<div>
<h1 class="text-xl font-bold text-gray-900 dark:text-white">管理后台</h1>
<p class="text-xs text-gray-500 dark:text-gray-400">老九网盘资源数据库</p>
</div>
</NuxtLink>
</div>
<!-- 中间状态信息 -->
2025-08-09 23:47:30 +08:00
<div class="flex items-center space-x-6">
<!-- 系统状态 -->
2025-08-07 18:47:26 +08:00
<div class="flex items-center space-x-2">
<div class="w-2 h-2 bg-green-500 rounded-full"></div>
<span class="text-sm text-gray-600 dark:text-gray-300">系统正常</span>
</div>
2025-08-09 23:47:30 +08:00
<!-- 自动处理状态 -->
<div class="flex items-center space-x-2">
<div :class="autoProcessEnabled ? 'w-2 h-2 bg-green-500 rounded-full' : 'w-2 h-2 bg-gray-400 rounded-full'"></div>
<span class="text-sm text-gray-600 dark:text-gray-300">
自动处理{{ autoProcessEnabled ? '已开启' : '已关闭' }}
</span>
</div>
<!-- 自动转存状态 -->
<div class="flex items-center space-x-2">
<div :class="autoTransferEnabled ? 'w-2 h-2 bg-blue-500 rounded-full' : 'w-2 h-2 bg-gray-400 rounded-full'"></div>
<span class="text-sm text-gray-600 dark:text-gray-300">
自动转存{{ autoTransferEnabled ? '已开启' : '已关闭' }}
</span>
</div>
<!-- 任务状态 -->
<div v-if="taskStore.hasActiveTasks" class="flex items-center space-x-2">
<div class="w-2 h-2 bg-orange-500 rounded-full animate-pulse"></div>
<span class="text-sm text-gray-600 dark:text-gray-300">
<template v-if="taskStore.runningTaskCount > 0">
{{ taskStore.runningTaskCount }}个任务运行中
</template>
<template v-else>
{{ taskStore.activeTaskCount }}个任务待处理
</template>
</span>
</div>
2025-08-07 18:47:26 +08:00
</div>
<!-- 右侧用户菜单 -->
<div class="flex items-center space-x-4">
<NuxtLink to="/" class="p-2 text-gray-400 hover:text-gray-600 dark:hover:text-gray-300 transition-colors">
<i class="fas fa-home text-lg"></i>
</NuxtLink>
<NuxtLink to="/admin-old" class="p-2 text-gray-400 hover:text-gray-600 dark:hover:text-gray-300 transition-colors">
<i class="fas fa-arrow-left text-lg"></i>
</NuxtLink>
<div class="flex items-center space-x-2 cursor-pointer p-2 rounded-lg hover:bg-gray-100 dark:hover:bg-gray-700 transition-colors">
<div class="w-8 h-8 bg-blue-600 rounded-full flex items-center justify-center">
<i class="fas fa-user text-white text-sm"></i>
</div>
<div class="hidden md:block text-left">
<p class="text-sm font-medium text-gray-900 dark:text-white">管理员</p>
<p class="text-xs text-gray-500 dark:text-gray-400">admin</p>
</div>
</div>
</div>
</div>
</header>
</template>
<script setup lang="ts">
2025-08-09 23:47:30 +08:00
import { ref, onMounted, onBeforeUnmount } from 'vue'
import { useTaskStore } from '~/stores/task'
import { useSystemConfigStore } from '~/stores/systemConfig'
// 任务状态管理
const taskStore = useTaskStore()
// 系统配置状态管理
const systemConfigStore = useSystemConfigStore()
// 自动处理和自动转存状态
const autoProcessEnabled = ref(false)
const autoTransferEnabled = ref(false)
// 获取系统配置状态
const fetchSystemStatus = async () => {
try {
2025-08-11 01:34:07 +08:00
await systemConfigStore.initConfig(false, true)
2025-08-09 23:47:30 +08:00
// 从系统配置中获取自动处理和自动转存状态
const config = systemConfigStore.config
if (config) {
// 检查自动处理状态
2025-08-11 01:34:07 +08:00
autoProcessEnabled.value = config.auto_process_ready_resources === '1' || config.auto_process_ready_resources === true
2025-08-09 23:47:30 +08:00
// 检查自动转存状态
autoTransferEnabled.value = config.auto_transfer_enabled === '1' || config.auto_transfer_enabled === true
}
} catch (error) {
console.error('获取系统状态失败:', error)
}
}
// 组件挂载时启动
onMounted(() => {
// 启动任务状态自动更新
taskStore.startAutoUpdate()
// 获取系统配置状态
fetchSystemStatus()
// 定期更新系统配置状态每30秒
const configInterval = setInterval(fetchSystemStatus, 30000)
// 保存定时器引用用于清理
;(globalThis as any).__configInterval = configInterval
})
// 组件销毁时清理
onBeforeUnmount(() => {
// 停止任务状态自动更新
taskStore.stopAutoUpdate()
// 清理配置更新定时器
if ((globalThis as any).__configInterval) {
clearInterval((globalThis as any).__configInterval)
delete (globalThis as any).__configInterval
}
})
2025-08-07 18:47:26 +08:00
</script>
<style scoped>
/* 确保Font Awesome图标正确显示 */
.fas {
font-family: 'Font Awesome 6 Free';
font-weight: 900;
}
</style>