diff --git a/src/api/devices.js b/src/api/devices.js new file mode 100644 index 0000000..03fec1e --- /dev/null +++ b/src/api/devices.js @@ -0,0 +1,13 @@ +import http from '@/plugins/http' + +/** + * 获取所有设备状态快照 + * 响应示例见接口文档:/api/admin/devices/status + * @returns {Promise<{devices: Record, availableDevices: string[], totalDevices: number, availableCount: number}>} + */ +export async function getAllDeviceStatus() { + const res = await http.get('/api/admin/devices/status') + return res.data +} + + diff --git a/src/layouts/AdminLayout.vue b/src/layouts/AdminLayout.vue index 390e253..34c7c0d 100644 --- a/src/layouts/AdminLayout.vue +++ b/src/layouts/AdminLayout.vue @@ -43,6 +43,10 @@ 公告管理 + + + 设备状态 + 系统设置 @@ -114,6 +118,7 @@ const pageTitleMap = { 'Links': '链接管理', 'Refund': '退单管理', 'Announcements': '公告管理', + 'DeviceStatus': '设备状态', 'Settings': '系统设置' } @@ -130,6 +135,7 @@ const canAccessUsers = computed(() => canAccessRoute('Users')) const canAccessLinks = computed(() => canAccessRoute('Links')) const canAccessRefund = computed(() => canAccessRoute('Refund')) const canAccessAnnouncements = computed(() => canAccessRoute('Announcements')) +const canAccessDeviceStatus = computed(() => canAccessRoute('DeviceStatus')) const canAccessSettings = computed(() => canAccessRoute('Settings')) // 获取积分余额 diff --git a/src/router/index.js b/src/router/index.js index 48b6f97..9f30211 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -12,6 +12,7 @@ const AnnouncementList = () => import('@/views/announcements/AnnouncementList.vu const RefundManagement = () => import('@/views/refund/RefundManagement.vue') const Play = () => import('@/views/Play.vue') const NotFound = () => import('@/views/NotFound.vue') +const DeviceStatus = () => import('@/views/devices/DeviceStatus.vue') export const routes = [ { path: '/login', name: 'Login', component: Login, meta: { public: true, title: '登录' } }, @@ -38,6 +39,7 @@ export const routes = [ { path: 'links', name: 'Links', component: LinkGenerate, meta: { title: '链接管理' } }, { path: 'refund', name: 'Refund', component: RefundManagement, meta: { title: '退单管理' } }, { path: 'announcements', name: 'Announcements', component: AnnouncementList, meta: { title: '公告管理' } }, + { path: 'devices', name: 'DeviceStatus', component: DeviceStatus, meta: { title: '设备状态' } }, ], }, { path: '/:pathMatch(.*)*', name: 'NotFound', component: NotFound, meta: { public: true, title: '未找到' } }, diff --git a/src/utils/permission.js b/src/utils/permission.js index 552f9f1..5a120e0 100644 --- a/src/utils/permission.js +++ b/src/utils/permission.js @@ -48,6 +48,9 @@ export const PERMISSIONS = { REFUND_MANAGE: 'refund:manage', REFUND_EXECUTE: 'refund:execute', REFUND_VIEW: 'refund:view', + + // 设备状态查看 + DEVICE_VIEW: 'device:view', } // 角色权限映射 @@ -93,6 +96,7 @@ export const ROUTE_PERMISSIONS = { 'Links': [PERMISSIONS.LINK_VIEW], 'Refund': [PERMISSIONS.REFUND_VIEW], 'Announcements': [PERMISSIONS.ANNOUNCEMENT_VIEW], + 'DeviceStatus': [PERMISSIONS.DEVICE_VIEW], } // 获取当前用户信息 diff --git a/src/views/devices/DeviceStatus.vue b/src/views/devices/DeviceStatus.vue new file mode 100644 index 0000000..5685564 --- /dev/null +++ b/src/views/devices/DeviceStatus.vue @@ -0,0 +1,125 @@ + + + + + + +