在创建非急救转运任务时,需要选择执行任务的人员。系统支持从当前用户所在分公司中选择司机和护士作为执行人员。
每个人员显示以下信息:
- 姓名
- 手机号
- 所属部门
- 岗位/角色
listUser({
deptId: 当前用户部门ID,
status: '0' // 只查询正常状态用户
})
[
{
userId: 用户ID,
nickName: '姓名',
phonenumber: '手机号',
deptName: '部门名称',
postName: '岗位名称',
roleName: '角色名称',
type: 'driver|nurse|other'
}
]
根据用户的岗位名称或角色名称判断:
- 包含"司机"关键字 → type: 'driver'
- 包含"护士"关键字 → type: 'nurse'
- 其他 → type: 'other'
initSelectedStaff()初始化已选人员列表,默认包含当前用户
loadDeptStaff()加载当前用户所在部门的所有人员
getUserType(user)根据岗位和角色判断用户类型
showStaffSelector()显示人员选择弹窗
filterStaff(type)按类型筛选人员(全部/司机/护士)
onStaffSearch(e)处理搜索输入,实时过滤人员列表
toggleStaffSelection(staff)切换人员选中状态
isStaffSelected(userId)判断人员是否已选中
confirmStaffSelection()确认人员选择,关闭弹窗
removeStaff(index)从已选列表中移除人员(当前用户除外)
执行任务人员
┌─────────────────────────┐
│ 张三 (司机) ✓ │ <- 当前用户,不可移除
├─────────────────────────┤
│ 李四 (护士) ✗ │ <- 可移除
├─────────────────────────┤
│ + 添加人员 │ <- 打开选择弹窗
└─────────────────────────┘
┌────────────────────────────┐
│ 选择执行人员 ✗ │ <- 标题栏
├────────────────────────────┤
│ 🔍 搜索姓名、手机号 │ <- 搜索框
├────────────────────────────┤
│ [全部] [司机] [护士] │ <- 类型筛选
├────────────────────────────┤
│ │
│ 张三 138****1234 │ <- 人员列表
│ 广州分公司 | 司机 ✓ │
│ │
│ 李四 139****5678 │
│ 广州分公司 | 护士 ○ │
│ │
├────────────────────────────┤
│ [取消] [确定(已选2)] │ <- 底部操作栏
└────────────────────────────┘
#007AFF(蓝色)#ff4d4f(红色)#f5f5f5(浅灰)#f0f0f0(浅灰)onLoad
↓
initSelectedStaff() - 初始化当前用户
↓
loadDeptStaff() - 加载部门人员
↓
filterStaffList() - 初始化过滤列表
点击"添加人员"
↓
showStaffSelector() - 打开弹窗
↓
用户筛选/搜索
↓
toggleStaffSelection() - 切换选中
↓
confirmStaffSelection() - 确认选择
↓
更新 selectedStaff
↓
关闭弹窗
submitTask()
↓
buildSubmitData()
↓
提取 assigneeIds: selectedStaff.map(staff => staff.userId)
↓
提交到后端
app/pages/task/create-emergency.vue - 急救转运任务创建页面app/api/system/user.js - 用户API接口ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java - 用户Controllerruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java - 用户Service接口