From a6f3f2d1445ba86d70057b5266b0eba455a4f956 Mon Sep 17 00:00:00 2001 From: Ironsp <1522278303@qq.com> Date: Sat, 5 Sep 2026 11:51:59 +0800 Subject: [PATCH] =?UTF-8?q?feat=20=E5=8E=8B=E5=AE=9E=E4=BD=9C=E4=B8=9A?= =?UTF-8?q?=E9=AA=A8=E6=9E=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components.d.ts | 2 + src/components/work/rtkCanvas.vue | 46 ++++++++ src/components/work/rtkHeader.vue | 172 +++++++++++++++++++++++++++++ src/components/work/rtkMonitor.vue | 102 +++++++++++++++-- 4 files changed, 312 insertions(+), 10 deletions(-) create mode 100644 src/components/work/rtkCanvas.vue create mode 100644 src/components/work/rtkHeader.vue diff --git a/src/components.d.ts b/src/components.d.ts index 15a74eb..851009d 100644 --- a/src/components.d.ts +++ b/src/components.d.ts @@ -38,6 +38,8 @@ declare module 'vue' { WarningItem: typeof import('./components/warning/item.vue')['default'] WorkDashboard: typeof import('./components/work/dashboard.vue')['default'] WorkDeviceControl: typeof import('./components/work/deviceControl.vue')['default'] + WorkRtkCanvas: typeof import('./components/work/rtkCanvas.vue')['default'] + WorkRtkHeader: typeof import('./components/work/rtkHeader.vue')['default'] WorkRtkMonitor: typeof import('./components/work/rtkMonitor.vue')['default'] } } diff --git a/src/components/work/rtkCanvas.vue b/src/components/work/rtkCanvas.vue new file mode 100644 index 0000000..485fd9c --- /dev/null +++ b/src/components/work/rtkCanvas.vue @@ -0,0 +1,46 @@ + + + + + diff --git a/src/components/work/rtkHeader.vue b/src/components/work/rtkHeader.vue new file mode 100644 index 0000000..109c109 --- /dev/null +++ b/src/components/work/rtkHeader.vue @@ -0,0 +1,172 @@ + + + + + diff --git a/src/components/work/rtkMonitor.vue b/src/components/work/rtkMonitor.vue index f18ca52..77b56bf 100644 --- a/src/components/work/rtkMonitor.vue +++ b/src/components/work/rtkMonitor.vue @@ -1,11 +1,45 @@ @@ -17,14 +51,62 @@ padding: 16px; } -.placeholder { +.footer-info { + display: flex; + justify-content: space-between; + align-items: flex-end; + margin-top: 12px; +} + +.legend { + display: flex; + flex-direction: column; + gap: 6px; +} + +.legend-item { display: flex; align-items: center; - justify-content: center; - min-height: 120px; - color: #999; - font-size: 14px; - border: 1px dashed #ddd; - border-radius: 8px; + gap: 8px; +} + +.legend-line { + width: 20px; + height: 2px; +} + +.legend-line--blue { + background: #3b82f6; +} + +.legend-area { + width: 16px; + height: 12px; + background: #bbf7d0; + border-radius: 2px; +} + +.legend-dot { + width: 12px; + height: 12px; + border-radius: 50%; + background: #f97316; +} + +.legend-text { + font-size: 12px; + color: #666; +} + +.location-info { + display: flex; + flex-direction: column; + align-items: flex-end; + gap: 4px; +} + +.location-text { + font-size: 12px; + color: #666; }