3.5 KiB
3.5 KiB
管理师补充功能修复总结
✅ 已修复的问题
1. 管理师补充显示两次
问题: feedback-detail.vue 中有两处显示 supplement 的代码
修复: 删除了第96-105行的重复代码,只保留第60-74行的优化版本
2. 后端接口调用错误
问题: 前端调用的是 /api/growth-record/daily/${id},无法获取 supplement 字段
修复: 修改为调用 /api/manager/feedback/teacher/${id},该接口返回完整的数据包括 supplement
3. GrowthRecordVO 缺少字段
问题: GrowthRecordVO 类中没有 supplement 字段
修复: 添加了 supplement 字段定义
⚠️ 黄色警告问题
警告信息
Do not set same key "7" in wx:key.
Do not set same key "26" in wx:key.
...
可能的原因
-
数据重复
- 从数据库截图看,可能有重复的记录ID
- 查询时可能返回了重复的数据
-
列表渲染问题
v-for使用的key值不唯一- 可能是
item.id在某些情况下为 undefined
建议的解决方案
方案1:确保 key 的唯一性
在 feedback.vue 中修改列表渲染的 key:
<!-- 原代码 -->
<view
v-for="item in list"
:key="item.id"
class="feedback-item"
>
<!-- 修改为 -->
<view
v-for="(item, index) in list"
:key="`feedback-${item.id || index}`"
class="feedback-item"
>
方案2:检查数据去重
在 loadList() 方法中添加去重逻辑:
// 在 normalizedRecords 处理后添加
const uniqueRecords = normalizedRecords.filter((item, index, self) =>
index === self.findIndex((t) => t.id === item.id)
)
if (this.page === 1) {
this.list = uniqueRecords
} else {
this.list.push(...uniqueRecords)
}
方案3:后端查询去重
在后端查询时添加 DISTINCT 或检查是否有重复数据:
SELECT DISTINCT * FROM growth_record ...
🔍 需要进一步检查
-
数据库数据
- 运行 SQL 检查是否有重复的 ID
SELECT id, COUNT(*) as count FROM growth_record GROUP BY id HAVING count > 1; -
API 返回数据
- 检查
/api/manager/feedback/list返回的数据是否有重复 - 查看控制台的网络请求,确认返回的数据结构
- 检查
-
前端数据处理
- 检查
normalizedRecords处理逻辑是否正确 - 确认分页加载时没有重复添加数据
- 检查
📝 测试步骤
-
清除缓存并重新编译
# 清除 node_modules 缓存 cd peidu/uniapp rm -rf node_modules/.cache # 重新编译 npm run dev:mp-weixin -
测试管理师补充功能
- 打开管理师端反馈管理
- 点击某条反馈的"查看详情"
- 确认只显示一个"管理师补充"区域
- 点击"修改补充"按钮
- 输入补充内容并提交
- 刷新页面,确认补充内容正确显示
-
检查控制台警告
- 打开开发者工具
- 查看是否还有
wx:key警告 - 如果有,记录具体的警告信息
💡 后续优化建议
-
添加加载状态
- 在加载数据时显示 loading 动画
- 避免用户重复点击
-
添加错误处理
- 当保存失败时,给出明确的错误提示
- 添加重试机制
-
优化数据刷新
- 保存成功后自动刷新详情页数据
- 避免需要手动刷新页面
-
添加操作日志
- 记录管理师的补充操作
- 显示补充时间和操作人