171 lines
4.4 KiB
Markdown
171 lines
4.4 KiB
Markdown
# 组织架构功能修复说明
|
||
|
||
## 🐛 修复的问题
|
||
|
||
### 1. 搜索功能异常
|
||
|
||
**问题描述**:
|
||
- 搜索后文本高亮会累积,导致显示错误
|
||
- 重置搜索后高亮无法清除
|
||
- DOMContentLoaded事件监听器在页面加载前就执行
|
||
|
||
**修复方案**:
|
||
- ✅ 修改`searchOrgChart()`函数,确保搜索前先清理所有高亮
|
||
- ✅ 恢复原始文本机制:搜索为空时恢复所有节点的原始文本
|
||
- ✅ 使用`orgChartData.allNodes`缓存数据,在重置时直接读取缓存
|
||
- ✅ 将初始化逻辑改为`initOrgSearch()`函数,在`loadOrgChart()`完成后调用
|
||
|
||
**修复代码位置**:
|
||
- `searchOrgChart()` 函数 (line 1324-1390)
|
||
- `highlightText()` 函数 (line 1392-1409)
|
||
- `initOrgSearch()` 函数 (line 1411-1457)
|
||
|
||
### 2. 连接线样式问题
|
||
|
||
**问题描述**:
|
||
- 树状图的连接线是直线延伸,不是直角折线
|
||
- 容易造成视觉误解,以为是线性关系而非层级关系
|
||
|
||
**修复方案**:
|
||
- ✅ 修改DOM结构,添加`tree-level`包装器
|
||
- ✅ 使用伪元素创建直角折线:
|
||
- `.tree-level::before` - 水平连接线
|
||
- `.tree-node-box::before` - 垂直连接线
|
||
- ✅ 根节点不显示向上的连接线
|
||
- ✅ 兼容的CSS选择器(不使用`:has()`)
|
||
|
||
**HTML结构变化**:
|
||
```html
|
||
<!-- 修复前 -->
|
||
<div class="org-tree">
|
||
<div class="tree-node root-node">
|
||
<div class="tree-node-box">根节点</div>
|
||
<div class="tree-children">
|
||
<div class="node-children">
|
||
<div class="tree-node">
|
||
<div class="tree-node-box">子节点</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- 修复后 -->
|
||
<div class="org-tree">
|
||
<div class="tree-level">
|
||
<div class="tree-node root-node">
|
||
<div class="tree-node-box">根节点</div>
|
||
<div class="tree-children">
|
||
<div class="tree-level">
|
||
<div class="node-children">
|
||
<div class="tree-node">
|
||
<div class="tree-node-box">子节点</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
```
|
||
|
||
**CSS样式修改**:
|
||
- `tree-level::before` - 创建水平连接线
|
||
- `tree-node-box::before` - 创建垂直连接线
|
||
- `.root-node .tree-node-box::before` - 根节点不显示连接线
|
||
|
||
## 🎨 视觉效果对比
|
||
|
||
### 修复前
|
||
```
|
||
根节点 ────
|
||
|
|
||
├─ 子节点1
|
||
└─ 子节点2
|
||
```
|
||
❌ 使用直线,视觉层次不清晰
|
||
|
||
### 修复后
|
||
```
|
||
┌───────┐
|
||
│根节点 │
|
||
└───────┘
|
||
│
|
||
┌───┴───┐
|
||
│ │
|
||
子1 子2
|
||
```
|
||
✅ 使用直角折线,层级关系清晰
|
||
|
||
## 📝 技术细节
|
||
|
||
### 搜索功能实现
|
||
|
||
1. **数据缓存**: `orgChartData.allNodes` 存储扁平化数据
|
||
2. **文本恢复**: 从缓存中恢复原始文本,避免高亮残留
|
||
3. **防抖优化**: 300ms防抖避免频繁搜索
|
||
4. **事件管理**: 在DOM加载完成后正确初始化
|
||
|
||
### 连接线实现
|
||
|
||
1. **多层结构**:
|
||
- `org-tree` → 根容器
|
||
- `tree-level` → 层级容器
|
||
- `tree-children` → 子节点容器
|
||
- `node-children` → 单个子节点容器
|
||
|
||
2. **CSS伪元素**:
|
||
- `::before` 垂直线
|
||
- `::after` 水平线
|
||
|
||
3. **Z-index层级**:
|
||
- 节点: `z-index: 1`
|
||
- 连接线: `z-index: 0`
|
||
|
||
## 🚀 使用方法
|
||
|
||
访问路径:
|
||
```
|
||
http://localhost:8000/fs-ai-asistant/api/workflow/lawrisk/admin/super
|
||
```
|
||
|
||
操作步骤:
|
||
1. 登录超级管理员控制台
|
||
2. 点击"🌳 组织架构"标签页
|
||
3. 查看树状组织架构(现在使用直角折线)
|
||
4. 在搜索框中输入关键词进行搜索
|
||
5. 观察搜索结果高亮显示
|
||
6. 点击"重置"按钮恢复完整视图
|
||
|
||
## ✨ 测试案例
|
||
|
||
### 搜索测试
|
||
- 输入 "市级" - 高亮显示市级相关部门
|
||
- 输入 "FSSJ" - 高亮显示编码包含FSSJ的部门
|
||
- 输入 "禅城" - 高亮显示禅城区相关部门
|
||
- 清空搜索框 - 自动恢复所有节点原始文本
|
||
|
||
### 连接线测试
|
||
- 查看根节点与子节点间的连接线
|
||
- 验证是否为直角折线
|
||
- 确认根节点无向上连接线
|
||
|
||
## 📊 修复效果
|
||
|
||
✅ 搜索功能完全正常
|
||
✅ 连接线改为直角折线
|
||
✅ 层级关系更清晰
|
||
✅ 无视觉误解
|
||
✅ 代码更健壮
|
||
✅ 兼容性更好
|
||
|
||
---
|
||
|
||
**修复时间**: 2025年11月17日
|
||
**修复文件**:
|
||
- `static/super_admin.html` - 前端修复
|
||
- `lawrisk/services/licensing_repo.py` - 后端树结构构建
|
||
- `lawrisk/api/v2.py` - API端点
|
||
|
||
**状态**: ✅ 修复完成并测试通过
|