车辆任务关联管理页面改进说明
改进内容
1. 下拉选择优化
- 任务选择:将原来的手动输入任务ID改为下拉选择
- 车辆选择:将原来的手动输入车辆ID改为下拉选择
- 支持搜索:两个下拉框都支持输入搜索功能
- 支持清空:可以清空已选择的内容
2. 用户体验提升
- 加载状态:下拉选择时显示加载状态
- 友好显示:任务显示为"任务编号 - 任务描述"格式
- 车辆显示:车辆显示为"车牌号 - 车辆类型"格式
- 字典转换:车辆类型自动转换为中文显示
3. 数据验证增强
- 重复检查:新增时检查是否已存在相同的任务车辆关联
- 默认状态:新增时自动设置状态为"已分配"
- 选择监听:添加任务和车辆选择变化的监听事件
4. 界面优化
- 对话框宽度:将对话框宽度从500px增加到600px
- 样式美化:优化下拉选项的显示样式
- 错误提示:添加友好的错误提示信息
技术实现
1. API集成
// 导入任务和车辆API
import { listTask } from "@/api/task";
import { listVehicle } from "@/api/system/vehicle";
2. 数据获取
// 获取任务列表
getTaskList() {
this.taskListLoading = true;
listTask({ pageNum: 1, pageSize: 1000 }).then(response => {
this.taskList = response.rows || [];
this.taskListLoading = false;
});
}
// 获取车辆列表
getVehicleList() {
this.vehicleListLoading = true;
listVehicle({ pageNum: 1, pageSize: 1000 }).then(response => {
this.vehicleList = response.rows || [];
this.vehicleListLoading = false;
});
}
3. 下拉选择组件
<el-select
v-model="form.taskId"
placeholder="请选择任务"
filterable
clearable
style="width: 100%"
@change="handleTaskChange"
:loading="taskListLoading"
>
<el-option
v-for="task in taskList"
:key="task.taskId"
:label="task.taskCode + ' - ' + (task.taskDescription || '无描述')"
:value="task.taskId"
>
<span style="float: left; font-weight: bold">{{ task.taskCode }}</span>
<span style="float: right; color: #8492a6; font-size: 13px">{{ task.taskDescription || '无描述' }}</span>
</el-option>
</el-select>
4. 重复检查逻辑
// 检查是否已存在相同的任务车辆关联
if (this.form.id == null) {
const exists = this.taskVehicleList.find(item =>
item.taskId === this.form.taskId && item.vehicleId === this.form.vehicleId
);
if (exists) {
this.$modal.msgError("该任务和车辆的关联关系已存在,请勿重复添加");
return;
}
}
使用说明
1. 新增关联
- 点击"新增"按钮
- 从下拉列表中选择任务(支持搜索)
- 从下拉列表中选择车辆(支持搜索)
- 选择关联状态(默认为"已分配")
- 填写备注(可选)
- 点击"确定"保存
2. 修改关联
- 点击表格中的"修改"按钮
- 在弹出的对话框中修改相关信息
- 点击"确定"保存修改
3. 搜索功能
- 任务搜索:在任务下拉框中输入任务编号或描述进行搜索
- 车辆搜索:在车辆下拉框中输入车牌号进行搜索
注意事项
- 数据加载:页面初始化时会自动加载任务和车辆列表
- 权限控制:需要相应的权限才能进行增删改查操作
- 数据完整性:系统会自动检查重复关联,防止数据重复
- 状态管理:关联状态变更需要相应的权限
后续优化建议
- 分页加载:如果任务和车辆数据量很大,可以考虑分页加载
- 缓存机制:可以添加本地缓存减少重复请求
- 实时更新:可以添加WebSocket实现数据实时更新
- 批量操作:可以添加批量分配车辆的功能
- 历史记录:可以添加操作历史记录功能