From 8f7591589ba9985eeeafd8670d057aac0e796e4a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BD=95=E5=BE=B7=E8=B6=85?= <13143889+he-dechao@user.noreply.gitee.com> Date: Fri, 1 Aug 2025 15:57:09 +0800 Subject: [PATCH] =?UTF-8?q?=E5=87=80=E7=A9=BA=E5=BD=A2=E5=8F=98=E7=9B=91?= =?UTF-8?q?=E6=B5=8B=E7=9B=B8=E5=85=B3=E5=8E=9F=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../clearance-detection/raw-data.vue | 2322 +++++++++++++++++ .../deformation-detection/index.vue | 781 ++++-- .../wide-angle-video/index.vue | 794 +++++- 3 files changed, 3639 insertions(+), 258 deletions(-) create mode 100644 src/views/project-operation-platform/data-processing/clearance-detection/raw-data.vue diff --git a/src/views/project-operation-platform/data-processing/clearance-detection/raw-data.vue b/src/views/project-operation-platform/data-processing/clearance-detection/raw-data.vue new file mode 100644 index 0000000..ee05b8e --- /dev/null +++ b/src/views/project-operation-platform/data-processing/clearance-detection/raw-data.vue @@ -0,0 +1,2322 @@ + + + + + 原始数据管理 + 管理和分析原始视频数据 + + + + + + + + + 上传视频 + + + + + + 批量分析 + + + + + + 导出数据 + + + + + + + 风电场A区 + 风电场B区 + 风电场C区 + + + + + + + + 已完成 + 待分析 + 分析中 + 失败 + + + + 查询 + + + + + + + + + {{ project.name }} + + + + {{ project.totalVideos }} 个视频 + + + + {{ project.completedCount }} 个已完成 + + + + {{ project.pendingCount }} 个待分析 + + + + + + + {{ unit.number }} + + 查看全部 + {{ getAnalysisButtonText(unit.status) }} + + + + + + + + + + + + {{ video.name }} + + {{ video.duration }} + {{ video.angle }}° + + + {{ getStatusText(video.status) }} + + + + + + + 分析进度 + {{ unit.progress }}% + + + + + + + + + + + + + 项目:{{ selectedVideo.projectName }} + 机组号:{{ selectedVideo.unitNumber }} + 采集人:{{ selectedVideo.collector }} + 风速:{{ selectedVideo.windSpeed }} m/s + 转速:{{ selectedVideo.rpm }} rpm + 采集时间:{{ selectedVideo.time }} + 角度:{{ selectedVideo.angle }}° + + + + + + + + + 风电场A区 + 风电场B区 + 风电场C区 + + + + + + + + + + + + + + + + + + + + + 选择视频 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file + diff --git a/src/views/project-operation-platform/data-processing/wide-angle-video/index.vue b/src/views/project-operation-platform/data-processing/wide-angle-video/index.vue index 5a2d2d2..dd53d73 100644 --- a/src/views/project-operation-platform/data-processing/wide-angle-video/index.vue +++ b/src/views/project-operation-platform/data-processing/wide-angle-video/index.vue @@ -1,17 +1,797 @@ - - - - + + + + + 检测分析结果报告 + 基于计算机视觉的风机叶片净空距离与形变状态分析 + + + + + + + + + 全部项目 + 风电场A区 + 风电场B区 + 风电场C区 + + + + + + + + 全部状态 + 正常 + 警告 + 异常 + + + + + + + + + + + 导出报告 + + + + 批量导出 + + + + + + + + + + + + + + + {{ overviewData.normalCount }} + 正常叶片 + + + + + + + + + + + + {{ overviewData.warningCount }} + 警告叶片 + + + + + + + + + + + + {{ overviewData.errorCount }} + 异常叶片 + + + + + + + + + + + + {{ overviewData.totalCount }} + 总检测数 + + + + + + + + + + + + {{ project.name }} + + + + {{ project.totalUnits }} 个机组 + + + + {{ project.completedUnits }} 已完成 + + + + + + + + + {{ unit.number }} + + 检测时间:{{ unit.detectionTime }} + 检测人员:{{ unit.operator }} + + + + + {{ getStatusText(unit.status) }} + + + + + + + + + + + + + 净空距离检测 + + + + + 查看大图 + + + + + + + 形变状态检测 + + + + + 查看大图 + + + + + + + + + + + 叶片{{ index + 1 }} · {{ getStatusText(blade.status) }} + + + 净空距离测量 + + + 最小净空距离: + {{ blade.clearanceDistance.min }}m + + + 平均净空距离: + {{ blade.clearanceDistance.avg }}m + + + 安全阈值: + {{ blade.clearanceDistance.threshold }}m + + + 安全系数: + + {{ blade.clearanceDistance.safetyFactor }} + + + + + + + 形变状态分析 + + + 最大形变量: + {{ blade.deformation.max }}mm + + + 平均形变量: + {{ blade.deformation.avg }}mm + + + 形变位置: + {{ blade.deformation.location }} + + + 形变等级: + + {{ getDeformationText(blade.deformation.level) }} + + + + + + + 检测结论 + + {{ blade.conclusion }} + + + + + 建议措施 + + + + {{ rec }} + + + + + + + 检测参数 + + + 风速: + {{ blade.params.windSpeed }}m/s + + + 转速: + {{ blade.params.rpm }}rpm + + + 温度: + {{ blade.params.temperature }}°C + + + 湿度: + {{ blade.params.humidity }}% + + + + + + + + + + + + + + + + + + + +.page-header { + margin-bottom: 20px; +} +.page-title { + font-size: 28px; + font-weight: 600; + margin: 0 0 8px 0; + color: #1d2129; +} +.page-subtitle { + font-size: 14px; + color: #86909c; + margin: 0; +} +.action-bar { + display: flex; + justify-content: space-between; + align-items: flex-end; + margin-bottom: 20px; + .filter-section { + flex: 1; + } + .action-buttons { + display: flex; + gap: 8px; + } +} +.overview-section { + margin-bottom: 20px; +} +.overview-card { + .overview-item { + display: flex; + align-items: center; + padding: 16px; + .overview-icon { + width: 48px; + height: 48px; + border-radius: 8px; + display: flex; + align-items: center; + justify-content: center; + margin-right: 16px; + font-size: 24px; + color: white; + &.normal { background-color: #00b42a; } + &.warning { background-color: #ff7d00; } + &.error { background-color: #f53f3f; } + &.total { background-color: #165dff; } + } + .overview-content { + .overview-number { + font-size: 24px; + font-weight: 600; + color: #1d2129; + line-height: 1; + } + .overview-label { + font-size: 14px; + color: #86909c; + margin-top: 4px; + } + } + } +} +.results-section { + .project-section { + margin-bottom: 32px; + background: #fff; + border-radius: 8px; + box-shadow: 0 2px 8px #f0f1f2; + padding: 20px; + .project-header { + display: flex; + justify-content: space-between; + align-items: center; + margin-bottom: 16px; + .project-title { + font-size: 20px; + font-weight: 600; + } + .project-stats { + display: flex; + gap: 16px; + .stat-item { + display: flex; + align-items: center; + gap: 4px; + color: #86909c; + } + } + } + .units-list { + .unit-result-card { + background: #fafbfc; + border-radius: 8px; + padding: 16px; + margin-bottom: 20px; + .unit-header { + display: flex; + justify-content: space-between; + align-items: center; + margin-bottom: 12px; + .unit-info { + .unit-title { + font-size: 16px; + font-weight: 600; + } + .unit-meta { + font-size: 12px; + color: #86909c; + margin-top: 2px; + span { + margin-right: 16px; + } + } + } + } + .blades-analysis { + display: flex; + flex-direction: column; + gap: 24px; + .blade-result { + display: flex; + gap: 32px; + background: #fff; + border-radius: 6px; + box-shadow: 0 1px 4px #f0f1f2; + padding: 16px; + .blade-header { + flex: 0 0 80px; + display: flex; + flex-direction: column; + align-items: flex-start; + gap: 4px; + .blade-title { + font-size: 15px; + font-weight: 600; + } + } + .blade-content { + display: flex; + gap: 24px; + width: 100%; + .result-images { + display: flex; + flex-direction: column; + gap: 16px; + .image-section { + h6 { + font-size: 13px; + color: #4e5969; + margin-bottom: 4px; + } + .blade-topbar { + margin-bottom: 4px; +} + +.image-container.large { + width: 220px; // 比之前 160px 大 + height: 140px; +} + .image-container { + position: relative; + width: 160px; + height: 100px; + border-radius: 6px; + overflow: hidden; + img { + width: 100%; + height: 100%; + object-fit: cover; + } + .image-overlay { + position: absolute; + top: 0; left: 0; right: 0; bottom: 0; + display: flex; + align-items: center; + justify-content: center; + background: rgba(0,0,0,0.2); + opacity: 0; + transition: opacity 0.2s; + &:hover { + opacity: 1; + } + } + } + } + } + .result-report { + flex: 1; + display: flex; + flex-direction: column; + gap: 12px; + .report-section { + h6 { + font-size: 13px; + color: #165dff; + margin-bottom: 4px; + } + .measurement-data, .deformation-data, .detection-params { + display: flex; + flex-wrap: wrap; + gap: 16px; + .data-item, .param-item { + font-size: 13px; + color: #4e5969; + .label { + color: #86909c; + } + .value.safe { color: #00b42a; } + .value.warning { color: #ff7d00; } + .value.danger { color: #f53f3f; } + } + } + .conclusion { + p { + color: #1d2129; + font-weight: 500; + margin: 0; + } + } + .recommendations { + ul { + margin: 0; + padding-left: 20px; + li { + color: #4e5969; + margin-bottom: 4px; + } + } + } + } + } + } + } + } + } + } + } +} + \ No newline at end of file
项目:{{ selectedVideo.projectName }}
机组号:{{ selectedVideo.unitNumber }}
采集人:{{ selectedVideo.collector }}
风速:{{ selectedVideo.windSpeed }} m/s
转速:{{ selectedVideo.rpm }} rpm
采集时间:{{ selectedVideo.time }}
角度:{{ selectedVideo.angle }}°
基于计算机视觉的风机叶片净空距离与形变状态分析
{{ blade.conclusion }}