Files
cattleTransportation/pc-cattle-transportation/EDIT_FORM_AUTOFILL_FIX.md
2025-10-20 17:32:09 +08:00

4.6 KiB

编辑司机表单自动填充修复

问题描述

点击编辑按钮时,司机信息表单中的车牌号和账号状态没有自动填充。

问题原因

  1. 字段名不匹配:后端返回的字段名是 car_number(下划线),但前端使用的是 carNumber(驼峰命名)
  2. 缺少 status 字段:后端查询中没有包含 member 表的 status 字段

修复方案

1. 前端修复 (driverDialog.vue)

// 修复前
ruleForm.carNumber = row.carNumber; // 字段名不匹配
ruleForm.status = row.status; // 后端没有返回此字段

// 修复后
ruleForm.carNumber = row.car_number; // 使用正确的字段名
ruleForm.status = row.status || '1'; // 添加默认值

2. 后端修复 (MemberDriverMapper.java)

更新所有查询方法,添加 m.status 字段:

// 修复前
@Select("SELECT md.id, md.member_id, md.username, md.car_number, " +
        "md.driving_license, md.driver_license, md.record_code, " +
        "md.car_img, md.id_card, md.remark, md.create_time, m.mobile " +
        "FROM member_driver md " +
        "LEFT JOIN member m ON md.member_id = m.id " +
        "ORDER BY md.id DESC")

// 修复后
@Select("SELECT md.id, md.member_id, md.username, md.car_number, " +
        "md.driving_license, md.driver_license, md.record_code, " +
        "md.car_img, md.id_card, md.remark, md.create_time, m.mobile, m.status " +
        "FROM member_driver md " +
        "LEFT JOIN member m ON md.member_id = m.id " +
        "ORDER BY md.id DESC")

修复的查询方法

  1. selectDriverList() - 司机列表查询
  2. selectDriverListByUsername() - 按用户名搜索
  3. selectDriverListByMobile() - 按手机号搜索
  4. selectDriverListBySearch() - 综合搜索
  5. selectDriverById() - 根据ID查询详情
  6. selectDriverByPlate() - 根据车牌号查询

数据流验证

1. 后端返回数据格式

{
    "id": 1,
    "member_id": 1,
    "username": "测试司机2",
    "car_number": "京A12345",  // ✅ 下划线格式
    "mobile": "19999999999",
    "status": "1",             // ✅ 新增状态字段
    "driver_license": "url1,url2",
    "driving_license": "url3",
    "car_img": "url4,url5",
    "record_code": "url6",
    "id_card": "url7,url8",    // ✅ 身份证字段
    "remark": "备注信息"
}

2. 前端数据映射

// 编辑时数据填充
ruleForm.id = row.id;
ruleForm.username = row.username;           // ✅ 司机姓名
ruleForm.mobile = row.mobile;               // ✅ 司机手机号
ruleForm.carNumber = row.car_number;        // ✅ 车牌号(修复字段名)
ruleForm.status = row.status || '1';        // ✅ 账号状态(修复字段名+默认值)
ruleForm.remark = row.remark;               // ✅ 备注

3. 表单显示效果

  • 司机姓名:自动填充 "测试司机2"
  • 司机手机号:自动填充 "19999999999"
  • 车牌号:自动填充 "京A12345"
  • 账号状态:自动选择 "启用" 或 "禁用"
  • 驾驶证:显示已上传的图片
  • 行驶证:显示已上传的图片
  • 牧运通备案码:显示已上传的图片
  • 身份证前后面:显示已上传的图片

测试步骤

1. 测试编辑功能

  1. 进入司机管理页面
  2. 点击任意司机的"编辑"按钮
  3. 验证表单字段是否正确填充:
    • 司机姓名
    • 司机手机号
    • 车牌号 (修复后应该显示)
    • 账号状态 (修复后应该显示)
    • 各种证件图片

2. 测试保存功能

  1. 修改车牌号
  2. 修改账号状态
  3. 点击保存
  4. 验证数据是否正确更新

3. 数据库验证

-- 检查司机数据
SELECT id, username, car_number, status FROM member_driver md 
LEFT JOIN member m ON md.member_id = m.id 
WHERE md.id = ?;

-- 检查状态字段
SELECT DISTINCT status FROM member;

预期结果

修复后,点击编辑按钮时:

  • 车牌号字段:自动填充数据库中的 car_number
  • 账号状态:自动选择对应的状态(启用/禁用)
  • 其他字段:继续正常填充
  • 图片字段:继续正常显示

技术要点

  1. 字段名映射:后端使用下划线命名,前端使用驼峰命名
  2. 默认值处理:为可能为空的字段提供默认值
  3. 数据完整性:确保所有必要的字段都在查询中返回
  4. 向后兼容:修复不影响现有功能

总结

通过修复字段名映射和添加缺失的 status 字段查询,编辑司机表单现在能够正确自动填充车牌号和账号状态,提升了用户体验。