diff --git a/packages/components/src/icons/icons.ts b/packages/components/src/icons/icons.ts index d22cff3e2..de3a42d80 100644 --- a/packages/components/src/icons/icons.ts +++ b/packages/components/src/icons/icons.ts @@ -56,6 +56,8 @@ import IconSendPlaneFill from "~icons/ri/send-plane-fill"; import IconRocketLine from "~icons/ri/rocket-line"; import IconArrowUpCircleLine from "~icons/ri/arrow-up-circle-line"; import IconArrowDownCircleLine from "~icons/ri/arrow-down-circle-line"; +import IconTerminalBoxLine from "~icons/ri/terminal-box-line"; +import IconClipboardLine from "~icons/ri/clipboard-line"; export { IconDashboard, @@ -116,4 +118,6 @@ export { IconRocketLine, IconArrowUpCircleLine, IconArrowDownCircleLine, + IconTerminalBoxLine, + IconClipboardLine, }; diff --git a/src/modules/index.ts b/src/modules/index.ts index a12a470c3..7a11a5f64 100644 --- a/src/modules/index.ts +++ b/src/modules/index.ts @@ -9,6 +9,7 @@ import pluginModule from "./system/plugins/module"; import userModule from "./system/users/module"; import roleModule from "./system/roles/module"; import settingModule from "./system/settings/module"; +import actuatorModule from "./system/actuator/module"; // const coreModules = [ // dashboardModule, @@ -28,6 +29,7 @@ const coreModules = [ postModule, pluginModule, settingModule, + actuatorModule, dashboardModule, menuModule, commentModule, diff --git a/src/modules/system/actuator/Actuator.vue b/src/modules/system/actuator/Actuator.vue new file mode 100644 index 000000000..04e0d73c1 --- /dev/null +++ b/src/modules/system/actuator/Actuator.vue @@ -0,0 +1,241 @@ + + + diff --git a/src/modules/system/actuator/module.ts b/src/modules/system/actuator/module.ts new file mode 100644 index 000000000..d7f023a15 --- /dev/null +++ b/src/modules/system/actuator/module.ts @@ -0,0 +1,32 @@ +import { definePlugin } from "@halo-dev/console-shared"; +import { IconTerminalBoxLine } from "@halo-dev/components"; +import BasicLayout from "@/layouts/BasicLayout.vue"; +import Actuator from "./Actuator.vue"; +import { markRaw } from "vue"; + +export default definePlugin({ + components: {}, + routes: [ + { + path: "/actuator", + component: BasicLayout, + children: [ + { + path: "", + component: Actuator, + meta: { + title: "系统概览", + searchable: true, + menu: { + name: "概览", + group: "system", + icon: markRaw(IconTerminalBoxLine), + priority: 3, + mobile: true, + }, + }, + }, + ], + }, + ], +}); diff --git a/src/modules/system/actuator/types/index.ts b/src/modules/system/actuator/types/index.ts new file mode 100644 index 000000000..7cccd5b18 --- /dev/null +++ b/src/modules/system/actuator/types/index.ts @@ -0,0 +1,91 @@ +export interface GlobalInfo { + externalUrl: string; + timeZone: string; + locale: string; + allowComments: boolean; + allowAnonymousComments: boolean; + allowRegistration: boolean; +} + +export interface Info { + git?: Git; + build?: Build; + java: Java; + os: Os; +} + +export interface Commit { + id: string; + time: Date; +} + +export interface Git { + branch: string; + commit: Commit; +} + +export interface Build { + artifact: string; + name: string; + time: Date; + version: string; + group: string; +} + +export interface Vendor { + name: string; + version: string; +} + +export interface Runtime { + name: string; + version: string; +} + +export interface Jvm { + name: string; + vendor: string; + version: string; +} + +export interface Java { + version: string; + vendor: Vendor; + runtime: Runtime; + jvm: Jvm; +} + +export interface Os { + name: string; + version: string; + arch: string; +} + +export interface Tag { + key: string; + value: string; +} + +export interface StartupStep { + name: string; + id: number; + tags: Tag[]; + parentId?: number; +} + +export interface Event { + endTime: Date; + duration: string; + startTime: Date; + startupStep: StartupStep; +} + +export interface Timeline { + startTime: Date; + events: Event[]; +} + +export interface Startup { + springBootVersion: string; + timeline: Timeline; +}