在任务详情页面的分配车辆对话框中,下拉列表中没有显示车辆选项,导致无法选择车辆进行分配。
SysTaskServiceImpl.getAvailableVehicles()
方法只是返回空列表,没有实际查询车辆数据VehicleInfoMapper
来查询车辆信息文件:SysTaskServiceImpl.java
// 添加导入
import com.ruoyi.system.mapper.VehicleInfoMapper;
import com.ruoyi.system.domain.VehicleInfo;
// 添加依赖注入
@Autowired
private VehicleInfoMapper vehicleInfoMapper;
@Override
public List<SysTaskVehicle> getAvailableVehicles(Long deptId, String taskType) {
List<SysTaskVehicle> availableVehicles = new ArrayList<>();
try {
// 查询指定部门下状态为正常的车辆
VehicleInfo queryParam = new VehicleInfo();
queryParam.setDeptId(deptId);
queryParam.setStatus("0"); // 0表示正常状态
List<VehicleInfo> vehicles = vehicleInfoMapper.selectVehicleInfoList(queryParam);
// 转换为SysTaskVehicle对象
for (VehicleInfo vehicle : vehicles) {
SysTaskVehicle taskVehicle = new SysTaskVehicle();
taskVehicle.setVehicleId(vehicle.getVehicleId());
taskVehicle.setVehicleNo(vehicle.getVehicleNo());
taskVehicle.setVehicleType(vehicle.getVehicleType());
taskVehicle.setVehicleBrand(vehicle.getVehicleBrand());
taskVehicle.setVehicleModel(vehicle.getVehicleModel());
availableVehicles.add(taskVehicle);
}
} catch (Exception e) {
// 如果查询失败,记录日志并返回空列表
System.err.println("查询可用车辆失败: " + e.getMessage());
}
return availableVehicles;
}
文件:detail.vue
<el-form-item label="车辆" prop="vehicleIds">
<el-select v-model="vehicleAssignForm.vehicleIds" placeholder="请选择车辆" multiple clearable style="width: 100%">
<el-option
v-for="vehicle in availableVehicles"
:key="vehicle.vehicleId"
:label="vehicle.vehicleNo + ' - ' + getVehicleTypeName(vehicle.vehicleType)"
:value="vehicle.vehicleId"
>
<div style="display: flex; justify-content: space-between; align-items: center;">
<div>
<div style="font-weight: bold; color: #303133;">{{ vehicle.vehicleNo }}</div>
<div style="font-size: 12px; color: #909399;">ID: {{ vehicle.vehicleId }}</div>
</div>
<div style="text-align: right;">
<div style="color: #67C23A; font-size: 13px;">{{ getVehicleTypeName(vehicle.vehicleType) }}</div>
<div style="color: #8492a6; font-size: 12px;">{{ vehicle.vehicleBrand }} {{ vehicle.vehicleModel }}</div>
</div>
</div>
</el-option>
</el-select>
</el-form-item>
/** 获取车辆类型名称 */
getVehicleTypeName(vehicleType) {
const typeDict = this.dict.type.sys_vehicle_type;
if (typeDict && typeDict.length > 0) {
const typeItem = typeDict.find(item => item.value === vehicleType);
return typeItem ? typeItem.label : vehicleType;
}
return vehicleType;
}
前端调用 getAvailableVehicles(deptId, taskType)
↓
后端Controller: /task/vehicle/available
↓
Service层: SysTaskServiceImpl.getAvailableVehicles()
↓
Mapper层: VehicleInfoMapper.selectVehicleInfoList()
↓
数据库查询: tb_vehicle_info表
↓
数据转换: VehicleInfo → SysTaskVehicle
↓
返回给前端
// VehicleInfo → SysTaskVehicle
SysTaskVehicle taskVehicle = new SysTaskVehicle();
taskVehicle.setVehicleId(vehicle.getVehicleId());
taskVehicle.setVehicleNo(vehicle.getVehicleNo());
taskVehicle.setVehicleType(vehicle.getVehicleType());
taskVehicle.setVehicleBrand(vehicle.getVehicleBrand());
taskVehicle.setVehicleModel(vehicle.getVehicleModel());
┌─────────────────────────────────────────────────────────┐
│ 车辆: [请选择车辆 ▼] │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ (无选项) │ │
│ └─────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────┐
│ 车辆: [粤A12345 - 救护车 ▼] │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ 粤A12345 - 救护车 │ │
│ │ ┌─────────────────┐ ┌─────────────────────────────┐ │ │
│ │ │ 粤A12345 │ │ 救护车 │ │ │
│ │ │ ID: 1 │ │ 奔驰 S350 │ │ │
│ │ └─────────────────┘ └─────────────────────────────┘ │ │
│ │ 粤A67890 - 转运车 │ │
│ │ ┌─────────────────┐ ┌─────────────────────────────┐ │ │
│ │ │ 粤A67890 │ │ 转运车 │ │ │
│ │ │ ID: 2 │ │ 丰田 海狮 │ │ │
│ │ └─────────────────┘ └─────────────────────────────┘ │ │
│ └─────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────┘
SysTaskServiceImpl.java
- Service层实现(已修复)detail.vue
- 前端页面(已优化)VehicleInfoMapper.java
- 车辆信息MapperVehicleInfo.java
- 车辆信息实体类SysTaskVehicle.java
- 任务车辆关联实体类