# 急救转运任务必填项校验完善说明 ## 📋 修改概述 为急救转运任务创建页面添加完整的必填项校验,并为所有必填字段添加红色星号(*)标识,提升用户体验和数据完整性。 ## ✨ 新增必填项校验 ### 1. 任务类型(必填) - **字段**: `selectedEmergencyTaskType` - **提示**: "请选择任务类型" - **数据源**: SQL Server `dictionary` 表(`vtitle='ServiceOrderType'`) - **保存字段**: `task_type_id` ### 2. 单据类型(必填) - **字段**: `selectedDocumentType` - **提示**: "请选择单据类型" - **数据源**: SQL Server `dictionary` 表(`vtitle='ServiceOrdAreaType'`) - **保存字段**: `document_type_id` ## 📝 完整的必填项列表 | # | 字段名称 | 字段标识 | 校验提示 | 红色星号 | |---|---------|---------|---------|---------| | 1 | 任务车辆 | `selectedVehicleId` | 请选择任务车辆 | ✅ | | 2 | 任务类型 | `selectedEmergencyTaskType` | 请选择任务类型 | ✅ | | 3 | 单据类型 | `selectedDocumentType` | 请选择单据类型 | ✅ | | 4 | 患者姓名 | `taskForm.patient.name` | 请输入患者姓名 | ✅ | | 5 | 联系电话 | `taskForm.patient.phone` | 请输入患者联系电话 | ✅ | | 6 | 转出医院名称 | `taskForm.hospitalOut.name` | 请输入转出医院名称 | ✅ | | 7 | 转出医院科室 | `taskForm.hospitalOut.department` | 请选择转出医院科室 | ✅ | | 8 | 转入医院名称 | `taskForm.hospitalIn.name` | 请输入转入医院名称 | ✅ | | 9 | 转入医院科室 | `taskForm.hospitalIn.department` | 请选择转入医院科室 | ✅ | ## 🎨 视觉标识 ### 红色星号样式 ```scss .form-label { font-size: 28rpx; margin-bottom: 15rpx; color: #333; &.required::before { content: '*'; color: #ff4d4f; // 红色 margin-right: 4rpx; font-weight: bold; } } ``` ### 显示效果 ``` * 任务车辆 * 任务类型 * 单据类型 转运时间 * 患者姓名 * 联系电话 ``` ## 🔍 校验逻辑 ### 校验顺序 ```javascript validateForm() { // 1. 任务车辆 if (!this.selectedVehicleId) { this.$modal.showToast('请选择任务车辆') return false } // 2. 任务类型(新增) if (!this.selectedEmergencyTaskType) { this.$modal.showToast('请选择任务类型') return false } // 3. 单据类型(新增) if (!this.selectedDocumentType) { this.$modal.showToast('请选择单据类型') return false } // 4. 患者姓名 if (!this.taskForm.patient.name) { this.$modal.showToast('请输入患者姓名') return false } // 5. 联系电话 if (!this.taskForm.patient.phone) { this.$modal.showToast('请输入患者联系电话') return false } // 6. 转出医院名称 if (!this.taskForm.hospitalOut.name) { this.$modal.showToast('请输入转出医院名称') return false } // 7. 转出医院科室 if (!this.taskForm.hospitalOut.department) { this.$modal.showToast('请选择转出医院科室') return false } // 8. 转入医院名称 if (!this.taskForm.hospitalIn.name) { this.$modal.showToast('请输入转入医院名称') return false } // 9. 转入医院科室 if (!this.taskForm.hospitalIn.department) { this.$modal.showToast('请选择转入医院科室') return false } return true } ``` ## 📊 修改文件 | 文件 | 修改内容 | 行数变化 | |------|---------|---------| | `create-emergency.vue` | 新增校验逻辑 + 添加红色星号 | +26/-9 | ## 🎯 业务规则 ### 任务类型 - **必填原因**: 用于同步到旧系统的 `ServiceOrdType` 参数 - **关联字段**: `sys_task_emergency.task_type_id` - **旧系统映射**: `ServiceOrdType` ### 单据类型 - **必填原因**: 用于同步到旧系统的 `ServiceOrdAreaType` 参数 - **关联字段**: `sys_task_emergency.document_type_id` - **旧系统映射**: `ServiceOrdAreaType` ### 科室信息 - **必填原因**: 1. 业务必需信息(医院转运必须明确科室) 2. 用于同步到旧系统的 `ServiceOrdPtServicesID` 和 `ServiceOrdPtInServicesID` 参数 - **关联字段**: - `sys_task_emergency.hospital_out_department_id` - `sys_task_emergency.hospital_in_department_id` - **旧系统映射**: - `ServiceOrdPtServicesID` (转出科室ID) - `ServiceOrdPtInServicesID` (转入科室ID) ## ✅ 测试场景 ### 场景1: 未选择任务类型 1. 填写其他必填项 2. 不选择任务类型 3. 点击保存 4. **预期**: 提示"请选择任务类型" ### 场景2: 未选择单据类型 1. 填写其他必填项 2. 不选择单据类型 3. 点击保存 4. **预期**: 提示"请选择单据类型" ### 场景3: 未选择转出科室 1. 填写其他必填项 2. 选择转出医院但不选择科室 3. 点击保存 4. **预期**: 提示"请选择转出医院科室" ### 场景4: 未选择转入科室 1. 填写其他必填项 2. 选择转入医院但不选择科室 3. 点击保存 4. **预期**: 提示"请选择转入医院科室" ### 场景5: 全部填写完整 1. 填写所有必填项 2. 点击保存 3. **预期**: 正常保存并跳转到任务列表 ## 🔗 相关文档 - [急救转运科室数据源及存储规范](../README.md#科室数据规范) - [任务类型动态加载配置](../README.md#任务类型配置) - [旧系统同步参数映射](../prd/旧系统同步参数映射表.md) ## 💡 用户体验优化 ### Before(修改前) - ❌ 无法区分哪些字段必填 - ❌ 用户可能遗漏重要信息 - ❌ 提交失败后才知道缺少哪些字段 ### After(修改后) - ✅ 红色星号清晰标识必填项 - ✅ 保存前逐项校验,及时提示 - ✅ 减少无效提交,提升填写效率 ## 🎊 总结 本次完善: 1. ✅ 新增任务类型和单据类型的必填校验 2. ✅ 为全部9个必填字段添加红色星号标识 3. ✅ 完善校验提示信息,引导用户正确填写 4. ✅ 确保提交数据的完整性,满足旧系统同步需求 现在用户可以清晰地看到哪些字段是必填的,提交时也会得到明确的提示!🎉