新增系统信息采集后端服务,引入 sysinfo 依赖获取 CPU、内存、主机名、系统版本、架构和 IP 地址等数据;新增系统相关 API 接口和 TypeScript 类型定义;重构仪表盘页面,整合服务器/隧道数量统计、系统信息展示、资源占用监控和 Frpc 运行日志功能;新增中英文国际化文案支持,完善前端交互逻辑。
45 lines
1.3 KiB
TypeScript
45 lines
1.3 KiB
TypeScript
import { getSystemInfo } from "@/api/system"
|
|
import { isTauri } from "@/utils/window"
|
|
|
|
/**
|
|
* 系统资源占用(CPU / 内存 百分比)。
|
|
*
|
|
* 调用后端命令 `get_system_info`(返回 `ApiResponse<{ cpu, memory }>`),
|
|
* 在非 Tauri 环境或后端不可用时回退到模拟数据,保证界面可用。
|
|
*/
|
|
export function useSystemStats(interval = 2000) {
|
|
const cpu = ref(0)
|
|
const memory = ref(0)
|
|
const isMock = ref(true)
|
|
|
|
// 模拟数据:随机游走,避免界面显示为静态 0
|
|
let mockCpu = 18
|
|
let mockMem = 42
|
|
function mock() {
|
|
mockCpu = Math.min(95, Math.max(3, mockCpu + (Math.random() - 0.5) * 8))
|
|
mockMem = Math.min(95, Math.max(10, mockMem + (Math.random() - 0.5) * 4))
|
|
cpu.value = Math.round(mockCpu)
|
|
memory.value = Math.round(mockMem)
|
|
isMock.value = true
|
|
}
|
|
|
|
async function refresh() {
|
|
if (isTauri()) {
|
|
try {
|
|
const info = await getSystemInfo()
|
|
cpu.value = Math.round(info.cpu)
|
|
memory.value = Math.round(info.memory)
|
|
isMock.value = false
|
|
return
|
|
} catch {
|
|
// 后端命令不可用,回退到模拟数据
|
|
}
|
|
}
|
|
mock()
|
|
}
|
|
|
|
const { pause, resume } = useIntervalFn(refresh, interval, { immediate: true })
|
|
|
|
return { cpu, memory, isMock, refresh, pause, resume }
|
|
}
|