在创建急救转运任务页面中,任务车辆字段需要默认显示当前登录用户绑定的车辆信息。如果用户未绑定车辆,则显示为空并允许用户手动选择。
前端文件: app/pages/task/create-emergency.vue
在车辆选择器中添加:value绑定,关联计算属性selectedVehicleIndex:
<picker mode="selector" :range="vehicles" :value="selectedVehicleIndex" @change="onVehicleChange">
<view class="form-input picker-input">
{{ selectedVehicle || '请选择任务车辆' }}
<uni-icons type="arrowright" size="16" color="#999"></uni-icons>
</view>
</picker>
添加selectedVehicleIndex计算属性,动态计算绑定车辆在车辆列表中的索引:
computed: {
// ...其他计算属性
// 计算车辆在picker中的索引,用于默认选中
selectedVehicleIndex() {
if (!this.selectedVehicle || this.vehicles.length === 0) {
return 0
}
const index = this.vehicles.findIndex(v => v === this.selectedVehicle)
return index !== -1 ? index : 0
}
}
在onLoad生命周期中,先加载可用车辆列表,然后获取并设置用户绑定的车辆:
onLoad(options) {
// 先加载车辆列表,然后加载绑定车辆信息
this.getAvailableVehicles().then(() => {
this.getUserBoundVehicleInfo()
})
// ...其他初始化
}
getUserBoundVehicleInfo()方法实现车辆绑定逻辑:
getUserBoundVehicleInfo() {
const userId = this.currentUser.userId
if (!userId) {
console.warn('用户ID不存在,无法获取绑定车辆')
return
}
getUserBoundVehicle(userId).then(response => {
const boundVehicle = response.data
if (boundVehicle && boundVehicle.vehicleId) {
const boundVehicleNo = boundVehicle.vehicleNo
const boundVehicleId = boundVehicle.vehicleId
console.log('用户绑定的车辆:', boundVehicleNo, 'ID:', boundVehicleId)
// 在车辆列表中查找绑定的车辆
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
console.log('默认选中车辆:', this.selectedVehicle)
} else {
console.warn('绑定的车辆不在可用车辆列表中')
}
} else {
console.log('用户未绑定车辆')
}
}).catch(error => {
console.error('获取用户绑定车辆信息失败:', error)
})
}
getAvailableVehicles()加载当前部门的可用车辆列表getUserBoundVehicleInfo()getUserProfile() API获取当前用户的个人信息userInfo.boundVehicle)vehicleOptions中查找匹配的车辆(按ID或车辆编号匹配)selectedVehicle和selectedVehicleIdselectedVehicleIndex计算属性自动计算索引:value绑定索引,显示默认选中状态{
vehicleId: 123, // 车辆ID
vehicleNo: "粤A12345", // 车辆编号
vehicleType: "救护车", // 车辆类型
deptId: 100, // 所属部门ID
bindTime: "2025-01-25" // 绑定时间
}
vehicleOptions: [
{
id: 123, // 车辆ID
name: "粤A12345", // 车辆编号
type: "救护车", // 车辆类型
status: "AVAILABLE" // 车辆状态
}
]
vehicles: ["粤A12345", "粤B67890", ...] // picker显示的车辆编号数组
car_id或dept_id为空(被过滤)功能包含完整的日志输出,便于调试:
console.log('用户绑定的车辆:', boundVehicleNo, 'ID:', boundVehicleId)
console.log('默认选中车辆:', this.selectedVehicle)
console.warn('绑定的车辆不在可用车辆列表中')
console.log('用户未绑定车辆')
console.error('获取用户绑定车辆信息失败:', error)
获取指定用户当前绑定的车辆信息。
请求方式: GET
请求参数:
- userId: 用户ID(路径参数)
返回数据示例:json { "code": 200, "msg": "查询成功", "data": { "vehicleId": 123, "vehicleNo": "粤A12345", "vehicleType": "救护车", "deptId": 100, "deptName": "广州分公司", "bindTime": "2025-01-25 10:30:00", "userId": 1 } }
异常情况:json { "code": 200, "msg": "查询成功", "data": null // 用户未绑定车辆 }
import { getUserBoundVehicle } from "@/api/vehicle"
文件: app/api/vehicle.js
export function getUserBoundVehicle(userId) {
return request({
url: '/system/vehicle/user/bound/' + userId,
method: 'get'
})
}
预期结果:
- 页面加载后,任务车辆字段自动显示绑定的车辆编号
- picker选中状态正确
- 控制台输出成功日志
预期结果:
- 页面加载后,任务车辆字段显示"请选择任务车辆"
- picker未选中任何项
- 控制台输出"用户未绑定车辆"
预期结果:
- 页面加载后,任务车辆字段显示"请选择任务车辆"
- 控制台输出警告信息
- 用户可以手动选择其他车辆
预期结果:
- 页面正常显示,不影响其他功能
- 控制台输出错误信息
- 任务车辆字段显示"请选择任务车辆"
/system/vehicle/user/bound/{userId}接口2025-01-25 v1:初始版本,实现任务车辆默认显示功能