3.6 KiB
3.6 KiB
✅ 家长端查看服务记录功能实现完成
实施时间: 2026-01-23
功能描述: 家长在订单详情页面查看陪伴员的打卡记录(签到/签退照片、时间、地点、服务时长)
📋 已完成的工作
1. 数据库修改 ✅
SQL文件: peidu/sql/add_order_id_to_checkin_simple.sql
修改内容:
- 为
check_in_record表添加order_id字段 - 添加索引
idx_order_id - 关联现有数据的
order_id
2. 后端修改 ✅
OrderDetailVO.java
- 新增
CheckInRecordVO内部类 - 新增
checkInRecord和checkOutRecord字段 - 新增
serviceDuration和serviceDurationText字段
OrderServiceImpl.java
- 修改
getOrderDetailFull()方法 - 查询订单的签到签退记录
- 计算服务时长
- 返回完整的打卡记录信息
3. 前端修改 ✅
文件: peidu/uniapp/src/order-package/pages/order/detail.vue
新增内容:
- 数据字段:
checkInRecord,checkOutRecord,serviceDuration - 服务记录显示区域(签到/签退卡片、服务时长)
previewPhoto()方法 - 预览照片formatTime()方法 - 格式化时间- 完整的服务记录样式
🧪 执行步骤
步骤 1: 执行数据库脚本
在 Navicat 中打开 peidu/sql/add_order_id_to_checkin_simple.sql
逐条执行以下SQL(不要一次性全部执行):
-- 1. 添加字段
ALTER TABLE check_in_record
ADD COLUMN order_id BIGINT NULL COMMENT '订单ID' AFTER work_order_no;
-- 2. 添加索引
ALTER TABLE check_in_record
ADD INDEX idx_order_id (order_id);
-- 3. 验证字段
DESC check_in_record;
-- 4. 关联数据
UPDATE check_in_record c
INNER JOIN `order` o ON c.work_order_no = o.order_no
SET c.order_id = o.id
WHERE c.order_id IS NULL AND c.work_order_no IS NOT NULL;
-- 5. 验证数据
SELECT * FROM check_in_record WHERE order_id IS NOT NULL LIMIT 10;
注意: 如果字段已存在会报错,但不影响功能,可以跳过第1步。
步骤 2: 重新编译后端
cd peidu/backend
mvn clean package -DskipTests
步骤 3: 重新编译前端
cd peidu/uniapp
npm run build:mp-weixin
步骤 4: 测试功能
测试场景: 查看已完成订单的服务记录
- 家长端登录
- 进入"我的订单"
- 选择一个已完成的订单(有签到签退记录)
- 查看订单详情
预期结果:
- ✅ 显示"服务记录"区域
- ✅ 显示签到信息(时间、地点、照片)
- ✅ 显示签退信息(时间、地点、照片)
- ✅ 显示服务时长(如"2小时30分钟")
- ✅ 点击照片可以预览大图
📊 功能特点
与陪伴员端日历的区别
| 对比项 | 家长端订单详情 | 陪伴员端日历 |
|---|---|---|
| 入口 | 订单详情页面 | 日历页面 |
| 展示 | 单个订单的打卡记录 | 按日期展示所有打卡 |
| 功能 | 查看服务记录 | 查看和管理打卡 |
✅ 完成清单
- 创建简化版SQL脚本(适用于Navicat)
- 后端VO添加打卡记录字段
- 后端服务层返回打卡记录
- 前端显示服务记录区域
- 前端添加照片预览功能
- 前端添加时间格式化
- 前端添加完整样式
📝 重要提示
- SQL执行: 请在Navicat中逐条执行SQL,不要一次性全部执行
- 字段检查: 执行前先用
DESC check_in_record;检查字段是否已存在 - 数据关联: 确保现有打卡记录正确关联到订单
- 编译顺序: 先编译后端,再编译前端
实施完成: 2026-01-23