feat: 完成 Frpilot 桌面应用核心布局与多语言支持
实现内容: - 新增多语言支持(中文/英文),包含完整翻译文件 - 适配 Windows 和 macOS 自定义标题栏,支持窗口控制与主题切换 - 新增侧边栏菜单,显示系统 CPU/内存占用与运行状态 - 配置 Tauri 窗口属性与权限,支持窗口拖拽、最大化等操作 - 新增 Pinia 状态管理,处理主题、语言与应用状态 - 新增系统统计数据获取与模拟逻辑,支持 Tauri 后端调用回退 - 新增路由配置,完成页面布局与视图组件初始化
This commit is contained in:
@@ -0,0 +1,51 @@
|
||||
import { invoke } from "@tauri-apps/api/core"
|
||||
import { isTauri } from "@/utils/window"
|
||||
|
||||
interface SystemInfo {
|
||||
cpu: number
|
||||
memory: number
|
||||
}
|
||||
|
||||
/**
|
||||
* 系统资源占用(CPU / 内存 百分比)。
|
||||
*
|
||||
* 优先调用后端命令 `get_system_info`(返回 { cpu, memory }),
|
||||
* 后端尚未实现时回退到模拟数据,保证界面可用。
|
||||
*/
|
||||
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 res = await invoke<SystemInfo>("get_system_info")
|
||||
if (res) {
|
||||
cpu.value = Math.round(res.cpu)
|
||||
memory.value = Math.round(res.memory)
|
||||
isMock.value = false
|
||||
return
|
||||
}
|
||||
} catch {
|
||||
// 后端命令未实现,回退到模拟数据
|
||||
}
|
||||
}
|
||||
mock()
|
||||
}
|
||||
|
||||
const { pause, resume } = useIntervalFn(refresh, interval, { immediate: true })
|
||||
|
||||
return { cpu, memory, isMock, refresh, pause, resume }
|
||||
}
|
||||
Reference in New Issue
Block a user