From 9d3e8beceb521a451f3d86e5dbbbfde6ab4260cc Mon Sep 17 00:00:00 2001
From: wjj <2069666735@qq.com>
Date: Wed, 6 May 2026 16:18:03 +0800
Subject: [PATCH] =?UTF-8?q?=E8=A1=A5=E5=85=85=E9=A1=B9=E7=9B=AE=E5=88=86?=
=?UTF-8?q?=E6=9E=90=E4=B8=AA=E4=BA=BA=E8=AF=A6=E6=83=85=E9=A1=B5=E6=AD=A3?=
=?UTF-8?q?=E5=BC=8F=E5=8C=96=E6=A0=B7=E5=BC=8F?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
...style-alignment-frontend-implementation.md | 24 ++
...n-detail-style-alignment-implementation.md | 18 ++
.../detail/ProjectAnalysisAbnormalTab.vue | 67 ++++--
.../detail/ProjectAnalysisDialog.vue | 122 ++++-------
.../detail/ProjectAnalysisSidebar.vue | 207 ++++++++++--------
5 files changed, 256 insertions(+), 182 deletions(-)
create mode 100644 docs/plans/frontend/2026-05-06-project-analysis-person-detail-style-alignment-frontend-implementation.md
create mode 100644 docs/reports/implementation/2026-05-06-project-analysis-person-detail-style-alignment-implementation.md
diff --git a/docs/plans/frontend/2026-05-06-project-analysis-person-detail-style-alignment-frontend-implementation.md b/docs/plans/frontend/2026-05-06-project-analysis-person-detail-style-alignment-frontend-implementation.md
new file mode 100644
index 00000000..253a4496
--- /dev/null
+++ b/docs/plans/frontend/2026-05-06-project-analysis-person-detail-style-alignment-frontend-implementation.md
@@ -0,0 +1,24 @@
+# 2026-05-06 项目分析个人详情页样式对齐前端实施计划
+
+## 目标
+
+- 将项目分析个人详情页样式对齐到用户提供的参考图。
+- 本次只调整前端样式表现,不改接口、字段、交互逻辑和业务内容。
+
+## 范围
+
+- `ruoyi-ui/src/views/ccdiProject/components/detail/ProjectAnalysisDialog.vue`
+- `ruoyi-ui/src/views/ccdiProject/components/detail/ProjectAnalysisSidebar.vue`
+- `ruoyi-ui/src/views/ccdiProject/components/detail/ProjectAnalysisAbnormalTab.vue`
+
+## 实施要点
+
+- 调整详情弹窗头部、左右分栏比例、页签尺寸和间距。
+- 调整左侧人物档案与命中模型摘要区块的标题、信息行、风险徽标和标签样式。
+- 调整右侧异常明细内容区的区块标题、表格头部、单元格留白、异常对象摘要卡片和快照块样式。
+- 保持现有数据绑定、页签切换、证据库按钮和分页逻辑不变。
+
+## 验证
+
+- 在真实业务页面打开项目总览详情弹窗,检查个人详情页视觉是否与参考图一致。
+- 确认异常明细、对象摘要、加入证据库按钮和分页仍可正常显示。
diff --git a/docs/reports/implementation/2026-05-06-project-analysis-person-detail-style-alignment-implementation.md b/docs/reports/implementation/2026-05-06-project-analysis-person-detail-style-alignment-implementation.md
new file mode 100644
index 00000000..1e97591b
--- /dev/null
+++ b/docs/reports/implementation/2026-05-06-project-analysis-person-detail-style-alignment-implementation.md
@@ -0,0 +1,18 @@
+# 2026-05-06 项目分析个人详情页样式对齐实施记录
+
+## 本次修改
+
+- 调整 `ProjectAnalysisDialog.vue`,补齐参考图中的标题区、内容区留白、左右分栏间距和页签样式。
+- 调整 `ProjectAnalysisSidebar.vue`,补齐人物档案区、风险等级徽标、命中模型摘要和标签的正式化版式。
+- 调整 `ProjectAnalysisAbnormalTab.vue`,补齐流水异常明细表格、异常对象摘要区、快照块和信息行样式。
+
+## 未改内容
+
+- 未改接口请求和数据拼装逻辑。
+- 未改页签切换、分页、加入证据库、异常分组和字段内容。
+- 未新增或删除业务区块。
+
+## 验证方式
+
+- 使用真实业务页面 `http://localhost/ccdiProject/detail/90337?tab=overview` 打开个人详情弹窗进行样式核对。
+- 核对左侧人物档案、右侧页签、表格块和异常对象摘要块的正式化效果。
diff --git a/ruoyi-ui/src/views/ccdiProject/components/detail/ProjectAnalysisAbnormalTab.vue b/ruoyi-ui/src/views/ccdiProject/components/detail/ProjectAnalysisAbnormalTab.vue
index 9981aede..57d5d3a6 100644
--- a/ruoyi-ui/src/views/ccdiProject/components/detail/ProjectAnalysisAbnormalTab.vue
+++ b/ruoyi-ui/src/views/ccdiProject/components/detail/ProjectAnalysisAbnormalTab.vue
@@ -244,29 +244,31 @@ export default {
.project-analysis-abnormal-tab {
display: flex;
flex-direction: column;
- gap: 16px;
+ gap: 20px;
}
.abnormal-card {
- padding: 20px;
- border: 1px solid #e2e8f0;
- border-radius: 6px;
+ border: 1px solid #d9e1ed;
background: #fff;
+ overflow: hidden;
}
.abnormal-card__header {
- margin-bottom: 14px;
+ margin-bottom: 0;
+ padding: 22px 30px;
+ border-bottom: 1px solid #e3eaf3;
}
.abnormal-card__title {
- font-size: 16px;
- font-weight: 600;
+ font-size: 18px;
+ font-weight: 700;
color: #0f172a;
}
.abnormal-card__content {
display: grid;
- gap: 16px;
+ gap: 0;
+ background: #ffffff;
}
.abnormal-card__subtitle {
@@ -275,15 +277,15 @@ export default {
}
.abnormal-table {
- border: 1px solid #e2e8f0;
- border-radius: 6px;
+ border-radius: 0;
overflow: hidden;
}
.abnormal-pagination {
display: flex;
justify-content: flex-end;
- margin-top: 16px;
+ padding: 18px 24px 20px;
+ border-top: 1px solid #e8eef6;
}
.multi-line-cell {
@@ -305,7 +307,7 @@ export default {
.tag-list {
display: flex;
flex-wrap: wrap;
- gap: 16px;
+ gap: 10px;
}
.object-card-grid {
@@ -316,9 +318,8 @@ export default {
.object-card {
padding: 16px;
- border: 1px solid #e2e8f0;
- border-radius: 6px;
- background: #f8fafc;
+ border: 1px solid #d9e1ed;
+ background: #ffffff;
}
.object-card__header {
@@ -367,8 +368,8 @@ export default {
margin-top: 12px;
padding: 12px;
border: 1px solid #dbeafe;
- border-radius: 6px;
- background: #eff6ff;
+ border-left: 3px solid #245b8f;
+ background: #f4f8fd;
}
.object-card__snapshot-label {
@@ -396,4 +397,36 @@ export default {
color: #1e293b;
text-align: right;
}
+
+.abnormal-table ::v-deep(.el-table__header-wrapper th) {
+ height: 58px;
+ padding: 0 22px;
+ border-bottom: 1px solid #d9e1ed;
+ background: #f3f6fa;
+ color: #5f7592;
+ font-size: 16px;
+ font-weight: 700;
+}
+
+.abnormal-table ::v-deep(.el-table__body-wrapper td) {
+ padding: 22px;
+ border-bottom: 1px solid #e6edf5;
+}
+
+.abnormal-table ::v-deep(.cell) {
+ padding-left: 0;
+ padding-right: 0;
+}
+
+.tag-list ::v-deep(.el-tag) {
+ height: 28px;
+ padding: 0 10px;
+ border: 1px solid #c8d6e8;
+ border-radius: 2px;
+ background: #ffffff;
+ color: #245b8f;
+ font-size: 12px;
+ font-weight: 600;
+ line-height: 26px;
+}
diff --git a/ruoyi-ui/src/views/ccdiProject/components/detail/ProjectAnalysisDialog.vue b/ruoyi-ui/src/views/ccdiProject/components/detail/ProjectAnalysisDialog.vue
index 30864254..2071bcf6 100644
--- a/ruoyi-ui/src/views/ccdiProject/components/detail/ProjectAnalysisDialog.vue
+++ b/ruoyi-ui/src/views/ccdiProject/components/detail/ProjectAnalysisDialog.vue
@@ -217,21 +217,22 @@ export default {
display: flex;
flex-direction: column;
min-height: calc(96vh - 64px);
- background: #f5f7fb;
+ border: 1px solid #dde3ec;
+ background: #ffffff;
overflow: hidden;
}
.project-analysis-header {
- padding: 20px 28px 18px;
- border-bottom: 1px solid #dbe4ef;
+ padding: 38px 54px 34px;
+ border-bottom: 1px solid #dde3ec;
background: #ffffff;
}
.project-analysis-header__main {
display: flex;
- align-items: flex-start;
+ align-items: flex-end;
justify-content: space-between;
- gap: 16px;
+ gap: 24px;
}
.project-analysis-header__title-group {
@@ -239,52 +240,52 @@ export default {
}
.project-analysis-header__eyebrow {
- font-size: 12px;
- font-weight: 600;
- letter-spacing: 0;
- color: #64748b;
+ color: #65758d;
+ font-size: 17px;
+ font-weight: 700;
+ line-height: 1;
}
.project-analysis-header__title {
- margin-top: 8px;
- font-size: 24px;
- font-weight: 600;
- line-height: 1.2;
- color: #0f172a;
+ margin-top: 24px;
+ color: #101a2b;
+ font-size: 34px;
+ font-weight: 700;
+ line-height: 1;
}
.project-analysis-header__meta {
display: inline-flex;
align-items: center;
- gap: 12px;
- min-height: 32px;
+ gap: 10px;
+ min-height: 34px;
padding: 0 12px;
border: 1px solid #bfd0e2;
- border-radius: 6px;
+ border-radius: 2px;
background: #eef4f9;
}
.project-analysis-header__meta-label {
- font-size: 12px;
- font-weight: 600;
color: #637187;
+ font-size: 13px;
+ font-weight: 600;
}
.project-analysis-header__meta-value {
+ color: #245b8f;
font-size: 13px;
font-weight: 600;
- color: #245b8f;
}
.project-analysis-workspace {
display: flex;
align-items: flex-start;
- gap: 20px;
- min-height: 700px;
- max-height: calc(96vh - 164px);
- padding: 24px;
+ gap: 56px;
+ min-height: 720px;
+ max-height: calc(96vh - 168px);
+ padding: 28px 54px 42px;
overflow: auto;
- background: #f5f7fb;
+ background: #ffffff;
}
.project-analysis-layout {
@@ -294,107 +295,74 @@ export default {
}
.project-analysis-layout__sidebar {
- flex: 0 0 320px;
+ flex: 0 0 38%;
+ max-width: 520px;
}
.project-analysis-layout__main {
flex: 1;
min-width: 0;
- border: 1px solid #dbe4ef;
- border-radius: 6px;
- background: #ffffff;
- overflow: hidden;
+ border-left: 1px solid #dde3ec;
+ padding-left: 56px;
}
.project-analysis-layout__alert {
- margin-bottom: 16px;
+ margin-bottom: 20px;
}
.project-analysis-tabs {
- margin-top: 0;
-}
-
-@media (max-width: 1100px) {
- .project-analysis-workspace {
- flex-direction: column;
- }
-
- .project-analysis-layout__sidebar {
- flex: none;
- width: 100%;
- }
-
- .project-analysis-layout__main {
- width: 100%;
- }
+ margin-top: -2px;
}
diff --git a/ruoyi-ui/src/views/ccdiProject/components/detail/ProjectAnalysisSidebar.vue b/ruoyi-ui/src/views/ccdiProject/components/detail/ProjectAnalysisSidebar.vue
index ad49471d..86b23875 100644
--- a/ruoyi-ui/src/views/ccdiProject/components/detail/ProjectAnalysisSidebar.vue
+++ b/ruoyi-ui/src/views/ccdiProject/components/detail/ProjectAnalysisSidebar.vue
@@ -1,51 +1,53 @@