From 63e2794dc00c8c5464a84a502e3107dab775f253 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AD=A3=E4=B8=87=E4=BF=8A?= Date: Tue, 25 Nov 2025 08:28:06 +0800 Subject: [PATCH] =?UTF-8?q?style/=E5=9B=BE=E6=A0=87=E6=9B=BF=E6=8D=A2?= =?UTF-8?q?=EF=BC=8C=E6=A0=B7=E5=BC=8F=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CANVAS_DRIVER_GUIDE.md | 177 ------------------------- src/assets/logo/logo.png | Bin 27083 -> 7043 bytes src/layout/components/Sidebar/Logo.vue | 5 +- src/views/dashboard/PieChartdevice.vue | 8 +- src/views/dashboard/index.vue | 9 ++ 5 files changed, 15 insertions(+), 184 deletions(-) delete mode 100644 CANVAS_DRIVER_GUIDE.md diff --git a/CANVAS_DRIVER_GUIDE.md b/CANVAS_DRIVER_GUIDE.md deleted file mode 100644 index f500b52..0000000 --- a/CANVAS_DRIVER_GUIDE.md +++ /dev/null @@ -1,177 +0,0 @@ -# Canvas 场景下使用 Driver.js 的指南 - -## 概述 - -Driver.js 可以用于 Canvas 场景,但有一些限制和特殊处理方式。 - -## Driver.js 在 Canvas 中的限制 - -1. **无法直接高亮 Canvas 内部元素**:Driver.js 只能高亮 DOM 元素,而 Canvas 内部绘制的内容(如设备图标、点标记等)不是 DOM 元素,无法直接高亮。 - -2. **可以高亮 Canvas 元素本身**:可以高亮整个 `` 标签,但无法精确定位到 Canvas 内部的某个绘制内容。 - -## 解决方案 - -### 方案 1:高亮整个 Canvas(最简单) - -直接高亮 Canvas 元素本身,适用于引导用户了解 Canvas 区域的功能。 - -```javascript -{ - element: '.main-canvas', // 或 '.canvas-wrapper' - popover: { - title: '平面图区域', - description: '这是平面图显示区域,您可以在这里查看设备位置和状态。', - side: 'top', - align: 'center' - } -} -``` - -### 方案 2:使用占位元素(推荐用于精确引导) - -如果需要在 Canvas 内部某个特定位置进行引导,可以创建一个临时的占位 DOM 元素: - -```javascript -// 创建占位元素 -const createPlaceholder = (x, y, width, height) => { - const placeholder = document.createElement('div'); - placeholder.className = 'canvas-placeholder'; - placeholder.style.position = 'absolute'; - placeholder.style.left = `${x}px`; - placeholder.style.top = `${y}px`; - placeholder.style.width = `${width}px`; - placeholder.style.height = `${height}px`; - placeholder.style.pointerEvents = 'none'; // 不阻挡 Canvas 交互 - placeholder.style.zIndex = '1000'; - document.body.appendChild(placeholder); - return placeholder; -}; - -// 在引导步骤中使用 -{ - element: '.canvas-placeholder', - popover: { - title: '设备图标', - description: '这是设备图标的位置,在编辑模式下可以拖拽移动。', - side: 'top', - align: 'center' - } -} -``` - -### 方案 3:使用自定义高亮(高级) - -结合 Canvas 坐标计算和自定义高亮层: - -```javascript -// 计算 Canvas 内部元素的屏幕坐标 -const getCanvasElementScreenPos = (canvasElement, canvasX, canvasY, scale, offsetX, offsetY) => { - const rect = canvasElement.getBoundingClientRect(); - const screenX = rect.left + (canvasX * scale + offsetX); - const screenY = rect.top + (canvasY * scale + offsetY); - return { screenX, screenY }; -}; - -// 创建自定义高亮层 -const createCustomHighlight = (x, y, width, height) => { - const highlight = document.createElement('div'); - highlight.className = 'custom-canvas-highlight'; - highlight.style.position = 'fixed'; - highlight.style.left = `${x}px`; - highlight.style.top = `${y}px`; - highlight.style.width = `${width}px`; - highlight.style.height = `${height}px`; - highlight.style.border = '3px solid #4dabf7'; - highlight.style.borderRadius = '8px'; - highlight.style.boxShadow = '0 0 20px rgba(77, 171, 247, 0.5)'; - highlight.style.pointerEvents = 'none'; - highlight.style.zIndex = '9999'; - document.body.appendChild(highlight); - return highlight; -}; -``` - -## 实际应用示例 - -### 示例 1:引导 Canvas 区域 - -```javascript -{ - element: '.canvas-wrapper', - popover: { - title: '平面图区域', - description: '这是主要的平面图显示区域,所有设备都会在这里显示。', - side: 'top', - align: 'center' - } -} -``` - -### 示例 2:引导 Canvas 中的特定设备(需要坐标计算) - -```javascript -// 假设要引导一个设备,其 Canvas 坐标为 (pointX, pointY) -const guideDevice = (pointX, pointY) => { - nextTick(() => { - if (!canvasRef.value) return; - - // 计算设备在屏幕上的位置 - const rect = canvasRef.value.getBoundingClientRect(); - const screenX = rect.left + (pointX * BL.value * scale.value + offsetX.value); - const screenY = rect.top + (pointY * BL.value * scale.value + offsetY.value); - - // 创建占位元素 - const placeholder = document.createElement('div'); - placeholder.className = 'device-placeholder'; - placeholder.style.position = 'fixed'; - placeholder.style.left = `${screenX - 20}px`; - placeholder.style.top = `${screenY - 20}px`; - placeholder.style.width = '40px'; - placeholder.style.height = '40px'; - placeholder.style.pointerEvents = 'none'; - placeholder.style.zIndex = '9999'; - document.body.appendChild(placeholder); - - // 使用 driver.js 高亮占位元素 - driverObj.highlight({ - element: '.device-placeholder', - popover: { - title: '设备图标', - description: '这是设备图标,在编辑模式下可以拖拽移动。', - side: 'bottom', - align: 'center' - } - }); - - // 引导结束后移除占位元素 - setTimeout(() => { - placeholder.remove(); - }, 5000); - }); -}; -``` - -## 当前项目中的最佳实践 - -在当前项目中,由于主要功能按钮(筛选、分区、编辑)都是 DOM 元素,Driver.js 可以正常工作。对于 Canvas 内部的引导,建议: - -1. **引导 Canvas 容器**:高亮整个 Canvas 区域,说明整体功能 -2. **引导相关操作按钮**:通过引导操作按钮(如编辑按钮)来间接引导 Canvas 功能 -3. **结合文字说明**:在引导提示中详细说明 Canvas 的操作方式 - -## 注意事项 - -1. **坐标转换**:Canvas 内部坐标需要转换为屏幕坐标才能创建占位元素 -2. **缩放和偏移**:需要考虑 Canvas 的缩放(scale)和偏移(offsetX, offsetY) -3. **动态更新**:如果 Canvas 内容会移动或变化,占位元素的位置也需要动态更新 -4. **性能考虑**:占位元素应该及时清理,避免内存泄漏 - -## 总结 - -Driver.js **可以**用于 Canvas 场景,但需要根据具体需求选择合适的方案: -- 简单场景:直接高亮 Canvas 元素 -- 精确引导:使用占位元素或自定义高亮 -- 当前项目:已有 DOM 按钮的引导已经足够,无需额外处理 Canvas 内部元素 - - diff --git a/src/assets/logo/logo.png b/src/assets/logo/logo.png index 6c4c8aa3fe0709b541016521601f16bd1703c71c..32c636a59f34c5e8225370ca5ddc435076c82884 100644 GIT binary patch literal 7043 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 VciQPYya#E3#U*RAvI}lc{s$>qz_S1V literal 27083 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 -

{{ title }}

+
-

{{ title }}

+
@@ -78,7 +78,6 @@ const getLogoTextColor = computed(() => { width: 70px; height: 30px; vertical-align: middle; - margin-right: 8px; } & .sidebar-title { diff --git a/src/views/dashboard/PieChartdevice.vue b/src/views/dashboard/PieChartdevice.vue index 319efd4..a606be1 100644 --- a/src/views/dashboard/PieChartdevice.vue +++ b/src/views/dashboard/PieChartdevice.vue @@ -43,19 +43,19 @@ export default { let data = [ { name: "正常运行数", - value: 268, + value: 3763, }, { name: "正常停止数", - value: 132, + value: 142, }, { name: "故障运行数", - value: 2, + value: 15, }, { name: "故障停止数", - value: 0, + value: 22, }, ]; this.initChart(data); diff --git a/src/views/dashboard/index.vue b/src/views/dashboard/index.vue index 2bc8088..bc861e5 100644 --- a/src/views/dashboard/index.vue +++ b/src/views/dashboard/index.vue @@ -405,6 +405,9 @@ export default { background: url("/src/assets/beij/nrk.png"); background-repeat: no-repeat; background-size: 100% 100%; + box-shadow: 0 0 15px 3px rgba(212, 234, 255, 0.2), + 0 0 30px 10px rgba(212, 234, 255, 0.1), + 0 0 50px 15px rgba(212, 234, 255, 0.2); } .el-dialog__wrapper { @@ -450,6 +453,7 @@ export default { .left { width: 25%; + min-width: 475px; height: 95%; padding: 0.5% 0.3% 0% 0%; background: url(../../assets/beij/left.png) no-repeat; @@ -532,6 +536,7 @@ export default { .right { width: 25%; + min-width: 475px; height: 95%; padding: 0.5% 0.3% 0% 0%; box-sizing: border-box; @@ -785,6 +790,10 @@ export default { } .remark-content { color: #fff; + font-size: 16px; + font-weight: bold; + text-align: start; + line-height: 28px; } .close-btn { background: #d4eaff50;