90 lines
2.7 KiB
Vue
90 lines
2.7 KiB
Vue
<template>
|
||
<div class="space-y-6">
|
||
<div class="grid grid-cols-4 gap-6">
|
||
<a-card class="text-center">
|
||
<div class="text-3xl font-bold text-blue-600">{{ stats.serverCount }}</div>
|
||
<div class="text-gray-500 mt-2">服务器总数</div>
|
||
</a-card>
|
||
<a-card class="text-center">
|
||
<div class="text-3xl font-bold text-green-600">{{ stats.onlineCount }}</div>
|
||
<div class="text-gray-500 mt-2">在线服务器</div>
|
||
</a-card>
|
||
<a-card class="text-center">
|
||
<div class="text-3xl font-bold text-purple-600">{{ stats.scriptCount }}</div>
|
||
<div class="text-gray-500 mt-2">脚本数量</div>
|
||
</a-card>
|
||
<a-card class="text-center">
|
||
<div class="text-3xl font-bold text-orange-600">{{ stats.executeCount }}</div>
|
||
<div class="text-gray-500 mt-2">今日执行</div>
|
||
</a-card>
|
||
</div>
|
||
|
||
<div class="grid grid-cols-2 gap-6">
|
||
<a-card title="最近执行记录">
|
||
<a-table
|
||
:data-source="recentExecutions"
|
||
:columns="executionColumns"
|
||
:pagination="false"
|
||
size="small"
|
||
/>
|
||
</a-card>
|
||
|
||
<a-card title="服务器状态">
|
||
<a-table
|
||
:data-source="serverStatus"
|
||
:columns="serverColumns"
|
||
:pagination="false"
|
||
size="small"
|
||
/>
|
||
</a-card>
|
||
</div>
|
||
</div>
|
||
</template>
|
||
|
||
<script setup>
|
||
import { ref, onMounted } from 'vue'
|
||
|
||
const stats = ref({
|
||
serverCount: 0,
|
||
onlineCount: 0,
|
||
scriptCount: 0,
|
||
executeCount: 0
|
||
})
|
||
|
||
const recentExecutions = ref([])
|
||
const serverStatus = ref([])
|
||
|
||
const executionColumns = [
|
||
{ title: '脚本名称', dataIndex: 'scriptName', key: 'scriptName' },
|
||
{ title: '执行时间', dataIndex: 'executeTime', key: 'executeTime' },
|
||
{ title: '状态', dataIndex: 'status', key: 'status' }
|
||
]
|
||
|
||
const serverColumns = [
|
||
{ title: '服务器名称', dataIndex: 'name', key: 'name' },
|
||
{ title: 'IP地址', dataIndex: 'ip', key: 'ip' },
|
||
{ title: '状态', dataIndex: 'status', key: 'status' }
|
||
]
|
||
|
||
onMounted(async () => {
|
||
// 模拟数据,实际项目中应该从API获取
|
||
stats.value = {
|
||
serverCount: 12,
|
||
onlineCount: 10,
|
||
scriptCount: 8,
|
||
executeCount: 25
|
||
}
|
||
|
||
recentExecutions.value = [
|
||
{ key: 1, scriptName: '系统更新', executeTime: '2024-01-15 10:30', status: '成功' },
|
||
{ key: 2, scriptName: '日志清理', executeTime: '2024-01-15 09:15', status: '成功' },
|
||
{ key: 3, scriptName: '备份数据', executeTime: '2024-01-15 08:00', status: '失败' }
|
||
]
|
||
|
||
serverStatus.value = [
|
||
{ key: 1, name: 'Web-01', ip: '192.168.1.10', status: '在线' },
|
||
{ key: 2, name: 'DB-01', ip: '192.168.1.20', status: '在线' },
|
||
{ key: 3, name: 'Cache-01', ip: '192.168.1.30', status: '离线' }
|
||
]
|
||
})
|
||
</script> |