diff --git a/src/layouts/AgencyLayout.vue b/src/layouts/AgencyLayout.vue index e6d7b0b..4c3ac57 100644 --- a/src/layouts/AgencyLayout.vue +++ b/src/layouts/AgencyLayout.vue @@ -11,16 +11,16 @@ 🏠 返回系统首页
- + 📊 工作台
任务管理
- + 🚑 紧急响应 - - +
+ 📝 护理记录 - + diff --git a/src/router/index.js b/src/router/index.js index f607314..5e2e9b8 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -46,6 +46,16 @@ const routes = [ path: 'workspace', name: 'AgencyWorkspace', component: () => import('../views/agency/Workspace.vue') + }, + { + path: 'emergency', + name: 'AgencyEmergency', + component: () => import('../views/agency/Emergency.vue') + }, + { + path: 'records', + name: 'AgencyRecords', + component: () => import('../views/agency/Records.vue') } ] }, diff --git a/src/stores/global.js b/src/stores/global.js index 9fe2e86..de30a7a 100644 --- a/src/stores/global.js +++ b/src/stores/global.js @@ -4,7 +4,26 @@ import { useNow, useDateFormat } from '@vueuse/core' export const useGlobalStore = defineStore('global', () => { // 模拟的全局数据库 - const alerts = ref([]) + const alerts = ref([ + { + id: 1, + level: 'L4', + time: '14:20:15', + type: '跌倒告警', + desc: '青和园社区 A区3号楼 发现疑似老人跌倒', + image: 'https://images.unsplash.com/photo-1516733725897-1aa73b87c8e8?q=80&w=200&auto=format&fit=crop', + read: false + }, + { + id: 2, + level: 'L2', + time: '14:15:22', + type: '异常行为', + desc: '长青护理院 2层走廊 监测到长时间静止', + image: 'https://images.unsplash.com/photo-1511884642898-4c92249e20b6?q=80&w=200&auto=format&fit=crop', + read: false + } + ]) const auditLogs = ref([ { hash: '0x8f2a...9b1c', time: '12:30:45', desc: '完成午餐进食' }, { hash: '0x3d4e...1f9a', time: '08:15:22', desc: '按时服用降压药' }, @@ -46,6 +65,9 @@ export const useGlobalStore = defineStore('global', () => { time, type: level === 'L4' ? '跌倒告警' : '异常行为', desc: message, + image: level === 'L4' + ? 'https://images.unsplash.com/photo-1516733725897-1aa73b87c8e8?q=80&w=200&auto=format&fit=crop' // 跌倒模拟/医疗场景 + : 'https://images.unsplash.com/photo-1511884642898-4c92249e20b6?q=80&w=200&auto=format&fit=crop', // 监控画面 read: false }) } diff --git a/src/views/admin/Dashboard.vue b/src/views/admin/Dashboard.vue index c38b298..dcb3259 100644 --- a/src/views/admin/Dashboard.vue +++ b/src/views/admin/Dashboard.vue @@ -13,23 +13,107 @@
- -
- -
+ +
+
+
+

+ + {{ viewMode === 'map' ? '全域态势图 (Shanghai Map)' : '重点社区实时感知' }} +

+
+ + +
+
+
+ + AI 巡检中 + +
- -
-
-
- -
-
+ +
+ +
+ + + + + + + + + +
+
+ +
+ +
+ + +
+ {{ community.name }} +
+
+
+ + +
+ +
+
+

{{ selectedCommunity.name }}

+ +
+

{{ selectedCommunity.location }}

+
+ 🤖 部署机器人: {{ selectedCommunity.robots }} + ● 运行状态: 良好 +
+
+ +
-
- Real-time Monitoring Active + + +
+
+ + + + +
+
+
+
{{ community.name }}
+
+ + {{ community.location }} +
+
+
+
机器人: {{ community.robots }}
+
{{ community.time }}
+
+
+
+ + +
+
@@ -39,15 +123,39 @@

实时告警流 (Alert Stream)

-
-
-
- {{ alert.type }} - {{ alert.time }} +
+
+
+ +
+ +
+
+ +
+
+ + {{ alert.type }} + + {{ alert.time }} +
+
{{ alert.desc }}
+
+ + +
+
-
{{ alert.desc }}
-
暂无实时告警
+
+
🛡️
+
全域态势平稳 暂无活跃告警
+
@@ -72,6 +180,48 @@ import { useGlobalStore } from '../../stores/global' const store = useGlobalStore() +const viewMode = ref('map') // 'map' or 'grid' +const selectedCommunity = ref(null) + +const communities = ref([ + { + name: '青和园社区', + location: 'A区 3号楼 102单元', + robots: 12, + status: 'normal', + time: '刚刚', + image: 'https://images.unsplash.com/photo-1545324418-cc1a3fa10c00?q=80&w=400&auto=format&fit=crop', + x: 45, y: 35 // Map coordinates in % + }, + { + name: '锦绣华府', + location: '西门 康复广场', + robots: 8, + status: 'normal', + time: '2分钟前', + image: 'https://images.unsplash.com/photo-1512917774080-9991f1c4c750?q=80&w=400&auto=format&fit=crop', + x: 35, y: 55 + }, + { + name: '长青护理院', + location: '2层 走廊尽头', + robots: 15, + status: 'normal', + time: '刚刚', + image: 'https://images.unsplash.com/photo-1586023492125-27b2c045efd7?q=80&w=400&auto=format&fit=crop', + x: 55, y: 45 + }, + { + name: '云栖养老中心', + location: '15号 独栋小院', + robots: 6, + status: 'normal', + time: '5分钟前', + image: 'https://images.unsplash.com/photo-1501785888041-af3ef285b470?q=80&w=400&auto=format&fit=crop', + x: 42, y: 65 + } +]) + const kpis = ref([ { label: '覆盖社区数', value: '128', trend: '12%', trendUp: true }, { label: '在线机器人', value: '1,042', trend: '5%', trendUp: true }, @@ -81,6 +231,22 @@ const kpis = ref([ diff --git a/src/views/agency/Records.vue b/src/views/agency/Records.vue new file mode 100644 index 0000000..a72045d --- /dev/null +++ b/src/views/agency/Records.vue @@ -0,0 +1,340 @@ + + + + + diff --git a/src/views/agency/Workspace.vue b/src/views/agency/Workspace.vue index 716b55e..896d1c0 100644 --- a/src/views/agency/Workspace.vue +++ b/src/views/agency/Workspace.vue @@ -1,116 +1,336 @@ diff --git a/src/views/robot/Monitor.vue b/src/views/robot/Monitor.vue index 6603d4b..68afa2a 100644 --- a/src/views/robot/Monitor.vue +++ b/src/views/robot/Monitor.vue @@ -4,39 +4,213 @@
-
REC
+
录制中
- FPS: {{ fps }} | LATENCY: {{ latency }}ms + 帧率: {{ fps }} | 延迟: {{ latency }}ms +
+
+ 当前场景: {{ scenes[currentScene].name }}
-
+
+ +
+ +
+ + + + -
+
+
+ + +
+
+ {{ el.icon }} + {{ el.type }} +
+
+ + +
+
{{ target.id }}
+
+
+
+
- -
- -
- {{ confidence }}% + + + + +