在创建非急救转运任务时,车牌号选择器加载当前用户所在分公司的所有车辆,并自动默认选中当前用户绑定的车牌号。
app/pages/task/create-emergency.vue/task/vehicle/available 接口实现deptId 自动查找所属分公司及其所有子部门的车辆getAvailableVehicles() {
const deptId = this.currentUser.deptId
return listAvailableVehicles(deptId, 'EMERGENCY').then(response => {
const vehicleList = response.data || response.rows || []
this.vehicleOptions = vehicleList.map(vehicle => ({
id: vehicle.vehicleId,
name: vehicle.vehicleNo,
type: vehicle.vehicleType,
status: vehicle.status
}))
this.vehicles = this.vehicleOptions.map(v => v.name)
}).catch(() => {
this.vehicles = []
})
}
// 新增方法:获取用户绑定的车辆信息
getUserBoundVehicleInfo() {
getUserProfile().then(response => {
const userInfo = response.data || response
if (userInfo.boundVehicle) {
const boundVehicleNo = userInfo.boundVehicle.vehicleNumber
const boundVehicleId = userInfo.boundVehicle.vehicleId
// 在车辆列表中查找绑定的车辆
const vehicleIndex = this.vehicleOptions.findIndex(v =>
v.id === boundVehicleId || v.name === boundVehicleNo
)
if (vehicleIndex !== -1) {
// 设置默认选中的车辆
this.selectedVehicle = this.vehicleOptions[vehicleIndex].name
this.selectedVehicleId = this.vehicleOptions[vehicleIndex].id
}
}
}).catch(error => {
console.error('获取用户绑定车辆信息失败:', error)
})
}
onLoad(options) {
// 先加载车辆列表,然后加载绑定车辆信息
this.getAvailableVehicles().then(() => {
this.getUserBoundVehicleInfo()
})
this.initSelectedStaff()
this.loadDeptStaff()
// 设置默认归属机构
if (this.currentUser.branchCompanyName) {
this.selectedOrganization = this.currentUser.branchCompanyName
}
}
import { getUserProfile } from "@/api/system/user"
listAvailableVehicles(deptId, taskType) - 获取可用车辆列表getUserProfile() - 获取用户详细信息(包含绑定车辆)用户:张三(司机)
绑定车辆:粤A12345
所在分公司:广州分公司
打开创建任务页面时:
- 车辆选择器显示:"粤A12345" ✓(默认选中)
- 可选择列表:粤A12345、粤A67890、粤B11111...
用户:李四(护士)
绑定车辆:无
所在分公司:深圳分公司
打开创建任务页面时:
- 车辆选择器显示:"请选择任务车辆"
- 可选择列表:粤B22222、粤B33333、粤B44444...
用户:王五(司机)
绑定车辆:粤C55555(已调往其他分公司)
所在分公司:珠海分公司
打开创建任务页面时:
- 车辆选择器显示:"请选择任务车辆"
- 可选择列表:粤C66666、粤C77777...
(绑定车辆不在当前分公司,不显示)
sequenceDiagram
participant U as 用户
participant P as 创建任务页面
participant API as 后端接口
participant DB as 数据库
U->>P: 打开创建任务页面
P->>API: 获取可用车辆列表(deptId, EMERGENCY)
API->>DB: 查询分公司所有车辆
DB-->>API: 返回车辆列表
API-->>P: 返回车辆数据
P->>API: 获取用户信息(getUserProfile)
API->>DB: 查询用户绑定车辆
DB-->>API: 返回用户信息
API-->>P: 返回绑定车辆信息
P->>P: 匹配绑定车辆ID
P->>P: 设置默认选中
P-->>U: 显示默认选中的车辆
接口: GET /task/vehicle/available
参数:
- deptId: 用户所在部门ID
- taskType: 任务类型(EMERGENCY)
返回数据结构:json { "code": 200, "data": [ { "vehicleId": 1, "vehicleNo": "粤A12345", "vehicleType": "急救车", "status": "AVAILABLE" } ] }
接口: GET /system/user/profile
返回数据结构:json { "code": 200, "data": { "userId": 1, "userName": "zhangsan", "nickName": "张三", "deptId": 101, "boundVehicle": { "vehicleId": 1, "vehicleNumber": "粤A12345" } } }
此功能与普通任务(维修保养、加油等)的车辆选择逻辑保持一致:
- ✅ 都加载分公司所有车辆
- ✅ 都默认选中用户绑定车辆
- ✅ 都支持手动切换车辆
- ✅ 统一的用户体验
app/pages/task/create-emergency.vue - 急救转运任务创建页面app/pages/task/create-normal.vue - 普通任务创建页面(参考实现)app/api/vehicle.js - 车辆相关APIapp/api/system/user.js - 用户相关API2025-10-18