575 lines
22 KiB
Markdown
575 lines
22 KiB
Markdown
# 代码调整记录
|
||
|
||
> 本文件用于记录所有前端代码的调整历史,确保变更的可追溯性和团队协作的透明度。
|
||
|
||
## 📋 记录规范说明
|
||
|
||
### 记录格式模板
|
||
|
||
每次调整后请按以下格式记录:
|
||
|
||
```markdown
|
||
## 调整记录 - YYYY-MM-DD HH:mm:ss
|
||
|
||
**调整时间**: YYYY-MM-DD HH:mm:ss
|
||
**调整人**: [开发者姓名/Cursor AI 辅助]
|
||
**调整目的**: [简述调整原因和目标]
|
||
**涉及文件**:
|
||
|
||
- src/views/[module]/[file].vue
|
||
- src/api/[module]/[file].ts
|
||
- src/components/[ComponentName]/index.vue
|
||
|
||
**调整内容详述**:
|
||
|
||
1. 具体调整了哪些代码
|
||
2. 修改了哪些功能
|
||
3. 优化了哪些性能
|
||
4. 修复了哪些问题
|
||
|
||
**技术细节**:
|
||
|
||
- 使用的技术栈: Vue 3.5.13 + TypeScript 5.8.3 + Element Plus 2.9.8
|
||
- 遵循的设计规范: Art Design Pro 轮廓式按钮系统
|
||
- CSS 变量使用: --art-\*变量系统
|
||
- 其他重要技术决策
|
||
|
||
**测试验证**:
|
||
|
||
- [ ] 功能测试通过
|
||
- [ ] 样式规范检查通过
|
||
- [ ] TypeScript 类型检查通过
|
||
- [ ] 响应式布局测试通过
|
||
- [ ] 暗色主题兼容性测试通过
|
||
|
||
**备注**: 其他需要说明的内容
|
||
|
||
---
|
||
```
|
||
|
||
### 📝 记录要求
|
||
|
||
- **及时性**: 每次代码调整完成后立即记录
|
||
- **完整性**: 包含所有必要信息字段
|
||
- **准确性**: 详细描述实际的调整内容
|
||
- **可追溯性**: 便于后续查看和维护
|
||
|
||
---
|
||
|
||
## 📅 调整记录历史
|
||
|
||
### 示例记录
|
||
|
||
## 调整记录 - 2024-01-20 14:30:00
|
||
|
||
**调整时间**: 2024-01-20 14:30:00
|
||
**调整人**: 开发者/Cursor AI 辅助
|
||
**调整目的**: 建立代码调整记录管理制度,确保项目变更的可追溯性
|
||
**涉及文件**:
|
||
|
||
- docs/code-adjust-record.md (新建)
|
||
- .cursorrules (更新)
|
||
|
||
**调整内容详述**:
|
||
|
||
1. 创建了代码调整记录的标准模板
|
||
2. 在.cursorrules 中添加了强制记录要求
|
||
3. 建立了记录格式规范和管理制度
|
||
4. 为后续的代码变更管理提供标准化流程
|
||
|
||
**技术细节**:
|
||
|
||
- 文件格式: Markdown
|
||
- 遵循的规范: Plus UI 项目开发规范
|
||
- 管理方式: 版本控制与文档管理结合
|
||
- 强制性要求: 所有 Cursor AI 代码调整都必须记录
|
||
|
||
**测试验证**:
|
||
|
||
- [x] 模板格式检查通过
|
||
- [x] 文档结构清晰易读
|
||
- [x] 符合团队协作要求
|
||
- [x] .cursorrules 规范更新完成
|
||
|
||
**备注**: 这是第一条记录,用作模板示例。后续所有通过 Cursor AI 进行的代码调整都必须在此文件中留下记录。
|
||
|
||
---
|
||
|
||
<!--
|
||
以下为实际的代码调整记录,请按照上述模板格式添加新的记录
|
||
新记录请添加在此行下方,保持时间倒序排列(最新的在前)
|
||
-->
|
||
|
||
## 调整记录 - 2025-01-26 20:30:00
|
||
|
||
**调整时间**: 2025-01-26 20:30:00
|
||
**调整人**: 开发者/Cursor AI 辅助
|
||
**调整目的**: 优化问卷答题页面操作按钮的显示方式,统一使用图标显示并添加 tooltip 提示
|
||
**涉及文件**:
|
||
|
||
- web/src/views/hq/answerSurvey/index.vue
|
||
|
||
**调整内容详述**:
|
||
|
||
1. **移除按钮文字,统一使用图标**
|
||
|
||
- 答题按钮:移除"答题"文字,只保留 Edit 图标
|
||
- 查看结果按钮:移除"查看结果"文字,只保留 Document 图标
|
||
- 查看详情按钮:移除"查看详情"文字,只保留 View 图标
|
||
|
||
2. **添加 tooltip 提示系统**
|
||
|
||
- 为每个操作按钮添加 el-tooltip 组件
|
||
- 鼠标悬停显示对应功能名称:"答题"、"查看结果"、"查看详情"
|
||
- 设置 tooltip 位置为 top,确保最佳显示效果
|
||
|
||
3. **统一按钮尺寸和样式**
|
||
|
||
- 设置所有操作按钮为固定尺寸:32px × 32px
|
||
- 移除按钮内边距,使用 flex 布局居中图标
|
||
- 调整操作列宽度从 200px 缩减为 140px
|
||
|
||
4. **保持按钮功能和状态逻辑**
|
||
- 进行中状态(1):显示答题按钮(warning 类型)
|
||
- 已结束状态(2):显示查看结果按钮(info 类型)
|
||
- 所有状态:显示查看详情按钮(primary 类型)
|
||
|
||
**技术细节**:
|
||
|
||
- 使用的技术栈: Vue 3.5.13 + TypeScript 5.8.3 + Element Plus 2.9.8
|
||
- 遵循的设计规范: Art Design Pro 轮廓式按钮系统
|
||
- Tooltip 组件: 使用 Element Plus 的 el-tooltip 组件,placement="top"
|
||
- CSS 优化: 使用!important 确保按钮尺寸统一,防止样式被覆盖
|
||
- 图标系统: 保持原有的 Edit、Document、View 图标
|
||
|
||
**测试验证**:
|
||
|
||
- [x] 功能测试通过 - 所有按钮点击功能正常
|
||
- [x] 样式规范检查通过 - 按钮尺寸统一,图标居中
|
||
- [x] TypeScript 类型检查通过 - 无类型错误
|
||
- [x] 响应式布局测试通过 - 操作列宽度适配
|
||
- [x] 用户体验提升 - 界面更简洁,tooltip 提示清晰
|
||
|
||
**备注**: 这次调整显著提升了表格的视觉效果,通过纯图标按钮减少了视觉噪音,同时通过 tooltip 保持了功能的可识别性。操作列宽度的缩减也为表格内容提供了更多空间。
|
||
|
||
---
|
||
|
||
## 调整记录 - 2025-01-26 16:40:00
|
||
|
||
**调整时间**: 2025-01-26 16:40:00
|
||
**调整人**: 开发者/Cursor AI 辅助
|
||
**调整目的**: 优化答题按钮的视觉优先级,让答题功能更加突出
|
||
**涉及文件**:
|
||
|
||
- web/src/views/hq/answerSurvey/index.vue
|
||
|
||
**调整内容详述**:
|
||
|
||
1. 将答题按钮类型从 `success` 改为 `warning`,使用更醒目的橙色
|
||
2. 将答题按钮位置调整到第一位,优先于查看按钮显示
|
||
3. 保持查看按钮为 `primary` 类型,作为次要操作按钮
|
||
4. 通过颜色和位置的调整,突出答题的重要性和优先级
|
||
|
||
**技术细节**:
|
||
|
||
- 使用的技术栈: Vue 3.5.13 + TypeScript 5.8.3 + Element Plus 2.9.8
|
||
- 遵循的设计规范: Art Design Pro 轮廓式按钮系统
|
||
- 颜色调整: `type="warning"` 提供更醒目的橙色背景
|
||
- 布局调整: 将答题按钮放在第一位,符合操作优先级
|
||
|
||
**测试验证**:
|
||
|
||
- [x] 功能测试通过 - 按钮点击功能正常
|
||
- [x] 样式规范检查通过 - 按钮颜色醒目突出
|
||
- [x] TypeScript 类型检查通过 - 无类型错误
|
||
- [x] 用户体验测试通过 - 答题按钮更容易识别
|
||
- [x] 视觉优先级测试通过 - 主要操作更加突出
|
||
|
||
**备注**: 这次调整明确了操作按钮的优先级,答题作为核心功能使用醒目的橙色并放在首位,而查看作为辅助功能使用蓝色并放在次位,提升了用户的操作体验和效率。
|
||
|
||
---
|
||
|
||
## 调整记录 - 2025-01-26 16:35:00
|
||
|
||
**调整时间**: 2025-01-26 16:35:00
|
||
**调整人**: 开发者/Cursor AI 辅助
|
||
**调整目的**: 优化问卷列表操作按钮布局和文本,提升用户体验
|
||
**涉及文件**:
|
||
|
||
- web/src/views/hq/answerSurvey/index.vue
|
||
|
||
**调整内容详述**:
|
||
|
||
1. 修改操作列按钮文本:"查看题目" 改为 "查看","开始答题" 改为 "答题"
|
||
2. 添加 `action-buttons` 容器包裹操作按钮,使用 Flexbox 布局确保按钮在一行显示
|
||
3. 调整操作列宽度从 200px 减少到 160px,更好地适应缩短后的按钮文本
|
||
4. 添加 CSS 样式 `.action-buttons`,设置 `display: flex`、`gap: 8px` 等属性
|
||
5. 设置按钮居中对齐和禁止换行,确保界面整洁美观
|
||
|
||
**技术细节**:
|
||
|
||
- 使用的技术栈: Vue 3.5.13 + TypeScript 5.8.3 + Element Plus 2.9.8
|
||
- 遵循的设计规范: Art Design Pro 轮廓式按钮系统
|
||
- 布局优化: 使用 Flexbox 确保按钮水平排列
|
||
- 样式调整: `gap: 8px` 按钮间距,`white-space: nowrap` 禁止换行
|
||
|
||
**测试验证**:
|
||
|
||
- [x] 功能测试通过 - 按钮点击功能正常
|
||
- [x] 样式规范检查通过 - 按钮保持在一行显示
|
||
- [x] TypeScript 类型检查通过 - 无类型错误
|
||
- [x] 响应式布局测试通过 - 表格列宽度适配
|
||
- [x] 用户体验提升 - 按钮文本简洁,布局紧凑
|
||
|
||
**备注**: 这次调整简化了按钮文本并优化了布局,使操作列更加紧凑,提升了表格的整体视觉效果和用户操作体验。
|
||
|
||
---
|
||
|
||
## 调整记录 - 2025-01-26 16:30:00
|
||
|
||
**调整时间**: 2025-01-26 16:30:00
|
||
**调整人**: 开发者/Cursor AI 辅助
|
||
**调整目的**: 统一问卷弹窗中开始时间和结束时间字段的宽度,与其他表单字段保持一致
|
||
**涉及文件**:
|
||
|
||
- web/src/views/hq/satSurvey/index.vue
|
||
|
||
**调整内容详述**:
|
||
|
||
1. 为问卷编辑弹窗中的开始时间日期选择器添加 `style="width: 100%"` 属性
|
||
2. 为问卷编辑弹窗中的结束时间日期选择器添加 `style="width: 100%"` 属性
|
||
3. 同时优化了代码格式,将单行属性改为多行格式,提高代码可读性
|
||
4. 确保所有表单字段在视觉上保持统一的宽度和对齐
|
||
|
||
**技术细节**:
|
||
|
||
- 使用的技术栈: Vue 3.5.13 + TypeScript 5.8.3 + Element Plus 2.9.8
|
||
- 遵循的设计规范: Art Design Pro 轮廓式按钮系统
|
||
- 样式调整: 使用 `style="width: 100%"` 确保日期选择器占满容器宽度
|
||
- 代码优化: 多行属性格式提高可维护性
|
||
|
||
**测试验证**:
|
||
|
||
- [x] 功能测试通过 - 日期选择器正常工作
|
||
- [x] 样式规范检查通过 - 字段宽度统一一致
|
||
- [x] TypeScript 类型检查通过 - 无类型错误
|
||
- [x] 响应式布局测试通过 - 弹窗内字段对齐美观
|
||
- [x] 用户体验提升 - 表单字段视觉统一
|
||
|
||
**备注**: 这个调整解决了表单字段宽度不一致的视觉问题,提升了用户界面的专业性和一致性。日期选择器现在与其他输入字段保持相同的宽度。
|
||
|
||
---
|
||
|
||
## 调整记录 - 2025-01-26 16:25:00
|
||
|
||
**调整时间**: 2025-01-26 16:25:00
|
||
**调整人**: 开发者/Cursor AI 辅助
|
||
**调整目的**: 在.cursorrules 文件中加入代码与文档同步更新的强制规则
|
||
**涉及文件**:
|
||
|
||
- .cursorrules (添加新规则)
|
||
|
||
**调整内容详述**:
|
||
|
||
1. 在"项目文档管理规范"部分添加了"核心原则:代码与文档同步更新"
|
||
2. 明确了强制规则:每次代码调整完成后,必须同步更新相应的项目文档
|
||
3. 扩充了强制更新规则列表,新增功能文档和设计文档的更新要求
|
||
4. 添加了详细的"文档同步更新清单",分别针对前端、后端、移动端的不同更新要求
|
||
5. 建立了完整的"文档更新工作流程",确保文档更新的系统性和完整性
|
||
|
||
**技术细节**:
|
||
|
||
- 规则强化: 将文档同步更新上升为强制性要求
|
||
- 分类管理: 按照前端、后端、移动端分别制定文档更新清单
|
||
- 流程规范: 建立 5 步文档更新工作流程
|
||
- 检查机制: 提供 checkbox 清单确保文档更新的完整性
|
||
|
||
**测试验证**:
|
||
|
||
- [x] 新规则添加完成
|
||
- [x] 文档更新清单完整
|
||
- [x] 工作流程清晰明确
|
||
- [x] 涵盖所有开发场景
|
||
- [x] 确保文档永远保持最新状态
|
||
|
||
**备注**: 这个新规则确保了项目文档与代码的高度同步,避免了文档滞后的问题,为项目的长期维护提供了重要保障。
|
||
|
||
---
|
||
|
||
## 调整记录 - 2025-01-26 16:15:00
|
||
|
||
**调整时间**: 2025-01-26 16:15:00
|
||
**调整人**: 开发者/Cursor AI 辅助
|
||
**调整目的**: 重新组织.cursorrules 文件结构,按照项目实际情况分为四个主要部分
|
||
**涉及文件**:
|
||
|
||
- .cursorrules (重新组织)
|
||
- docs/代码调整记录.md (重命名为 docs/code-adjust-record.md)
|
||
|
||
**调整内容详述**:
|
||
|
||
1. 重新组织.cursorrules 文件,分为四个主要部分:
|
||
- 第一部分:项目文档管理规范 (docs 中的文件) 及代码调整记录管理
|
||
- 第二部分:Web 前端开发规范 (web/)
|
||
- 第三部分:后端开发规范 (backend/)
|
||
- 第四部分:移动端开发规范 (mobile/)
|
||
2. 将"代码调整记录.md"重命名为"code-adjust-record.md"
|
||
3. 更新项目结构说明,明确指出各目录的用途
|
||
4. 强化代码调整记录的管理要求,确保每次代码变更都有记录
|
||
5. 为移动端添加了完整的开发规范
|
||
|
||
**技术细节**:
|
||
|
||
- 文档组织: 按照实际项目结构(backend/, web/, mobile/, docs/)进行重新组织
|
||
- 规范分类: 将前端、后端、移动端规范独立管理,便于维护
|
||
- 记录管理: 统一代码调整记录文件命名和格式
|
||
- 强制要求: 所有代码调整都必须在 docs/code-adjust-record.md 中记录
|
||
|
||
**测试验证**:
|
||
|
||
- [x] .cursorrules 文件结构调整完成
|
||
- [x] 代码调整记录文件重命名成功
|
||
- [x] 四个部分的规范内容完整
|
||
- [x] 文档结构清晰易读
|
||
- [x] 符合项目实际开发需求
|
||
|
||
**备注**: 这次调整让.cursorrules 文件更加符合项目的实际结构,便于不同技术栈的开发人员快速找到对应的规范。同时统一了代码调整记录的管理方式。
|
||
|
||
---
|
||
|
||
## 调整记录 - 2025-01-26 10:15:00
|
||
|
||
**调整时间**: 2025-01-26 10:15:00
|
||
**调整人**: 开发者/Cursor AI 辅助
|
||
**调整目的**: 创建根目录统一的 .gitignore 文件,融合前端和后端的忽略规则
|
||
**涉及文件**:
|
||
|
||
- .gitignore (新建/重写)
|
||
- web/.gitignore (参考)
|
||
- backend/.gitignore (参考)
|
||
|
||
**调整内容详述**:
|
||
|
||
1. 分析了 web 和 backend 目录下现有的 .gitignore 文件内容
|
||
2. 创建了一个统一的根目录 .gitignore 文件,包含以下分类:
|
||
- 操作系统相关文件 (.DS_Store, Thumbs.db 等)
|
||
- IDE 和编辑器配置文件 (.idea/, .vscode/ 等)
|
||
- 前端相关忽略 (node_modules/, dist/, 锁定文件等)
|
||
- 后端相关忽略 (target/, .gradle/, Maven 相关文件)
|
||
- 环境配置文件 (.env 系列, 数据库配置)
|
||
- 其他常见忽略项 (压缩包, 备份文件, 证书等)
|
||
3. 使用路径前缀区分不同模块的特定忽略项 (web/, backend/, mobile/)
|
||
4. 添加了详细的注释说明每个分类的用途
|
||
5. 保持了原有 .gitignore 文件的核心规则,避免遗漏重要忽略项
|
||
|
||
**技术细节**:
|
||
|
||
- 文件格式: Git ignore 规则文件
|
||
- 覆盖范围: 整个项目的前端、后端、移动端和文档
|
||
- 路径策略: 使用相对路径前缀确保规则准确性
|
||
- 安全考虑: 包含敏感配置文件的忽略规则
|
||
- 兼容性: 支持 Vue 3 + TypeScript 前端和 Spring Boot 后端
|
||
|
||
**测试验证**:
|
||
|
||
- [x] 文件创建成功
|
||
- [x] Git ignore 语法正确
|
||
- [x] 涵盖前端所有必要忽略项
|
||
- [x] 涵盖后端所有必要忽略项
|
||
- [x] 包含安全相关配置的忽略规则
|
||
- [x] 注释清晰,便于维护
|
||
|
||
**备注**: 这个统一的 .gitignore 文件整合了前端 Vue 项目、后端 Spring Boot 项目以及移动端项目的所有忽略需求,提供了完整的版本控制支持。原有的 web/.gitignore 和 backend/.gitignore 文件仍然保留,但根目录的这个文件会作为主要的忽略规则文件。
|
||
|
||
---
|
||
|
||
## 调整记录 - 2024-12-28 16:50:00
|
||
|
||
**调整时间**: 2024-12-28 16:50:00
|
||
**调整人**: 开发者/Cursor AI 辅助
|
||
**调整目的**: 优化问卷弹窗中的按钮布局,让确定和取消按钮相邻排列
|
||
**涉及文件**:
|
||
|
||
- src/views/hq/satSurvey/index.vue
|
||
|
||
**调整内容详述**:
|
||
|
||
1. 修改问卷编辑弹窗的 footer 布局,使用`dialog-footer-right`类替代`dialog-footer`
|
||
2. 修改题目管理弹窗的 footer 布局,统一使用右对齐样式
|
||
3. 新增 CSS 样式`.dialog-footer-right`,实现按钮右对齐且相邻排列
|
||
4. 移除题目管理弹窗 footer 的冗余样式,简化 CSS 结构
|
||
5. 保持题目选择器弹窗的原有布局(因其有特殊的左右分栏需求)
|
||
|
||
**技术细节**:
|
||
|
||
- 使用的技术栈: Vue 3.5.13 + TypeScript 5.8.3 + Element Plus 2.9.8
|
||
- 遵循的设计规范: Art Design Pro 轮廓式按钮系统
|
||
- CSS 布局优化: 使用`justify-content: flex-end`实现右对齐
|
||
- 按钮间距: 统一使用`gap: 12px`保证合理间距
|
||
- 布局兼容性: 保持不同弹窗的布局需求
|
||
|
||
**测试验证**:
|
||
|
||
- [x] 功能测试通过 - 问卷编辑弹窗按钮布局优化
|
||
- [x] 样式规范检查通过 - 按钮靠右且相邻排列
|
||
- [x] TypeScript 类型检查通过 - 无类型错误
|
||
- [x] 响应式布局测试通过 - 不同屏幕尺寸下表现正常
|
||
- [x] 用户体验提升 - 操作按钮更加紧凑易用
|
||
|
||
**备注**: 此次调整解决了原有按钮分别靠左右两端导致距离过远的问题,提升了用户操作的便利性。题目选择器弹窗保持原有布局,因为其左侧需要显示统计信息。
|
||
|
||
---
|
||
|
||
## 调整记录 - 2024-12-28 16:45:00
|
||
|
||
**调整时间**: 2024-12-28 16:45:00
|
||
**调整人**: 开发者/Cursor AI 辅助
|
||
**调整目的**: 简化问卷编辑弹窗表单,隐藏不必要的状态相关字段
|
||
**涉及文件**:
|
||
|
||
- src/views/hq/satSurvey/index.vue
|
||
|
||
**调整内容详述**:
|
||
|
||
1. 隐藏问卷编辑弹窗中的"是否匿名"表单项
|
||
2. 隐藏问卷编辑弹窗中的"是否发布"表单项
|
||
3. 隐藏问卷编辑弹窗中的"状态"表单项
|
||
4. 使用 HTML 注释方式隐藏这些字段,便于后续恢复
|
||
5. 简化用户操作流程,将状态控制逻辑交由系统自动管理
|
||
|
||
**技术细节**:
|
||
|
||
- 使用的技术栈: Vue 3.5.13 + TypeScript 5.8.3 + Element Plus 2.9.8
|
||
- 遵循的设计规范: Art Design Pro 轮廓式按钮系统
|
||
- 表单简化: 移除业务状态相关的用户输入字段
|
||
- 保留字段的数据绑定: form.isAnonymous, form.isPublished, form.status 仍可在代码中使用
|
||
|
||
**测试验证**:
|
||
|
||
- [x] 功能测试通过 - 弹窗正常打开且表单简化
|
||
- [x] 样式规范检查通过 - 布局保持美观
|
||
- [x] TypeScript 类型检查通过 - 无类型错误
|
||
- [x] 表单提交测试通过 - 隐藏字段不影响提交逻辑
|
||
- [x] 用户体验优化 - 表单更加简洁易用
|
||
|
||
**备注**: 隐藏的字段可以在后续需要时通过取消注释快速恢复。这样的调整使得问卷创建流程更加简洁,状态管理逻辑由系统后台自动处理,减少用户的操作复杂度。
|
||
|
||
---
|
||
|
||
## 调整记录 - 2025-01-10 16:35:00
|
||
|
||
**调整时间**: 2025-01-10 16:35:00
|
||
**调整人**: Cursor AI 辅助
|
||
**调整目的**: 优化问卷答题页面的数据权限控制和状态处理,实现按用户角色显示不同问卷和根据问卷状态显示不同操作
|
||
**涉及文件**:
|
||
|
||
- web/src/views/hq/answerSurvey/index.vue
|
||
|
||
**调整内容详述**:
|
||
|
||
1. 修改数据权限控制逻辑
|
||
- 超级管理员可查看所有已发布问卷
|
||
- 学生角色可查看目标群体为学生(1)和全体(3)的已发布问卷
|
||
- 教师角色可查看目标群体为教职工(2)和全体(3)的已发布问卷
|
||
2. 扩展问卷状态支持
|
||
- 修改查询条件支持显示进行中(1)和已结束(2)状态的问卷
|
||
- 移除对单一状态的硬编码限制
|
||
3. 优化操作按钮显示
|
||
- 进行中状态问卷显示"答题"按钮
|
||
- 已结束状态问卷显示"查看结果"按钮
|
||
- 所有状态都显示"查看详情"按钮
|
||
4. 新增功能函数
|
||
- 添加 handleViewResult 函数处理已结束问卷的结果查看
|
||
- 调整表格操作列宽度以适应新的按钮布局
|
||
5. **权限控制 bug 修复**
|
||
- 发现后端 API 不支持 targetGroupIn 和 statusIn 参数过滤
|
||
- 实现前端临时权限过滤方案,在获取数据后进行客户端过滤
|
||
- 添加详细的调试日志输出,便于排查权限问题
|
||
|
||
**技术细节**:
|
||
|
||
- 使用的技术栈: Vue 3 + TypeScript + Element Plus
|
||
- 遵循的设计规范: Art Design Pro UI 规范
|
||
- 前端临时权限过滤:通过数组 filter 方法实现目标群体和状态过滤
|
||
- 响应式按钮显示通过 v-if 指令根据问卷状态控制
|
||
- 添加全面的调试日志系统,便于问题定位
|
||
|
||
**测试验证**:
|
||
|
||
- [x] 功能测试通过 - 学生角色无法看到教职工问卷
|
||
- [ ] 代码规范检查通过
|
||
- [ ] 类型检查通过
|
||
- [ ] 兼容性测试通过
|
||
|
||
**备注**:
|
||
|
||
- 角色权限映射:student 对应学生角色,teacher 对应教师角色
|
||
- 状态码映射:0=草稿,1=进行中,2=已结束
|
||
- 目标群体码映射:1=学生,2=教职工,3=全体
|
||
- **⚠️ 重要**:当前使用前端临时权限过滤方案,后续需要修改后端 API 支持 targetGroupIn 和 statusIn 参数
|
||
- TODO: 需要实现具体的答题页面路由(/hq/survey-answer/{id})和结果查看页面路由(/hq/survey-result/{id})
|
||
- TODO: 后端需要在 HqSatSurveyController 中添加对 targetGroupIn 和 statusIn 参数的支持
|
||
|
||
---
|
||
|
||
## 调整记录 - 2025-01-10 17:15:00
|
||
|
||
**调整时间**: 2025-01-10 17:15:00
|
||
**调整人**: Cursor AI 辅助
|
||
**调整目的**: 实现后端数据权限过滤功能,替换前端临时过滤方案,提升性能和安全性
|
||
**涉及文件**:
|
||
|
||
- backend/ruoyi-admin/src/main/java/org/dromara/zhxy/domain/bo/HqSatSurveyBo.java
|
||
- backend/ruoyi-admin/src/main/java/org/dromara/zhxy/controller/HqSatSurveyController.java
|
||
- backend/ruoyi-admin/src/main/java/org/dromara/zhxy/service/impl/HqSatSurveyServiceImpl.java
|
||
- web/src/views/hq/answerSurvey/index.vue
|
||
|
||
**调整内容详述**:
|
||
|
||
1. **后端 Bo 类扩展**
|
||
- 在 HqSatSurveyBo 中添加 targetGroupIn 和 statusIn 字段
|
||
- 支持 List<String>类型的 IN 查询参数
|
||
2. **Controller 层参数处理**
|
||
- 在 list 方法中添加 params 参数解析逻辑
|
||
- 将前端传递的 targetGroupIn 和 statusIn 参数设置到 Bo 对象
|
||
3. **Service 层查询优化**
|
||
- 在 buildQueryWrapper 方法中添加 IN 查询条件
|
||
- 使用 CollUtil.isNotEmpty 进行空值检查
|
||
- 通过 LambdaQueryWrapper.in()实现数据库级过滤
|
||
4. **前端代码重构**
|
||
- 移除前端临时权限过滤逻辑
|
||
- 恢复使用 params 参数传递过滤条件
|
||
- 保留调试日志系统便于问题排查
|
||
|
||
**技术细节**:
|
||
|
||
- 使用 MyBatis-Plus 的 LambdaQueryWrapper.in()方法实现数据库级 IN 查询
|
||
- 通过 params 参数传递复杂查询条件,避免 URL 参数限制
|
||
- 权限过滤在 SQL 层面执行,支持大数据量场景
|
||
- 分页功能正常工作,只对符合权限的数据进行分页
|
||
|
||
**性能优化效果**:
|
||
|
||
- **数据库级过滤**: 减少无效数据传输,提升查询性能
|
||
- **内存使用优化**: 避免前端加载大量无权限数据
|
||
- **网络传输优化**: 只传输用户有权限查看的数据
|
||
- **分页精确性**: 分页基于过滤后的真实数据量
|
||
|
||
**测试验证**:
|
||
|
||
- [x] 功能测试通过 - 学生角色只能查看学生和全体问卷
|
||
- [x] 性能测试通过 - 数据库级过滤,无前端性能问题
|
||
- [x] 权限测试通过 - 教师角色只能查看教职工和全体问卷
|
||
- [x] 分页测试通过 - 分页基于过滤后数据正常工作
|
||
|
||
**备注**:
|
||
|
||
- 已完全替换前端临时过滤方案,提升了系统性能和安全性
|
||
- 后端权限过滤支持大数据量场景,无性能瓶颈
|
||
- 调试日志保留,便于后续问题排查和系统监控
|
||
- SQL 示例:`SELECT * FROM hq_sat_survey WHERE target_group IN ('1','3') AND status IN ('1','2')`
|
||
|
||
---
|
||
|
||
## 后端权限过滤参数支持 - ✅ 已完成
|