# 编辑司机表单自动填充修复 ## 问题描述 点击编辑按钮时,司机信息表单中的车牌号和账号状态没有自动填充。 ## 问题原因 1. **字段名不匹配**:后端返回的字段名是 `car_number`(下划线),但前端使用的是 `carNumber`(驼峰命名) 2. **缺少 status 字段**:后端查询中没有包含 `member` 表的 `status` 字段 ## 修复方案 ### 1. 前端修复 (`driverDialog.vue`) ```javascript // 修复前 ruleForm.carNumber = row.carNumber; // 字段名不匹配 ruleForm.status = row.status; // 后端没有返回此字段 // 修复后 ruleForm.carNumber = row.car_number; // 使用正确的字段名 ruleForm.status = row.status || '1'; // 添加默认值 ``` ### 2. 后端修复 (`MemberDriverMapper.java`) 更新所有查询方法,添加 `m.status` 字段: ```java // 修复前 @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. 后端返回数据格式 ```json { "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. 前端数据映射 ```javascript // 编辑时数据填充 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. 数据库验证 ```sql -- 检查司机数据 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` 字段查询,编辑司机表单现在能够正确自动填充车牌号和账号状态,提升了用户体验。