# 病情选择功能优化说明 ## 修改概述 优化了非急救转运任务创建页面中的病情选择功能,使其默认显示所有病情数据,输入文字时再进行过滤筛选。 ## 修改文件 - `app/pages/task/create-emergency.vue` ## 功能变更 ### 优化前 - 打开病情选择弹窗时,不显示任何数据 - 需要用户输入关键词才能显示搜索结果 - 用户体验不佳,增加了操作步骤 ### 优化后 - 打开病情选择弹窗时,**自动加载并显示所有病情数据**(最多50条) - 用户可以直接浏览和选择常见病情 - 输入关键词后,实时过滤显示匹配的病情 - 清空关键词时,重新显示所有病情数据 ## 技术实现 ### 1. 新增方法 `loadAllDiseases()` ```javascript // 加载所有病情(默认显示) loadAllDiseases() { // 使用空字符串调用搜索接口,后端返回前50条数据 searchIcd10('').then(response => { this.diseaseSearchResults = response.data || [] }).catch(error => { console.error('加载病情列表失败:', error) this.diseaseSearchResults = [] }) } ``` ### 2. 修改 `showDiseaseSelector()` 方法 - 打开弹窗时调用 `loadAllDiseases()` 加载默认数据 ```javascript showDiseaseSelector() { this.tempSelectedDiseases = [...this.selectedDiseases] this.diseaseSearchKeyword = '' // 默认加载所有病情 this.loadAllDiseases() this.$refs.diseasePopup.open() } ``` ### 3. 优化 `onDiseaseSearch()` 搜索逻辑 - 当关键词为空时,重新加载所有病情 - 当有关键词时,执行过滤搜索 ```javascript onDiseaseSearch(e) { const keyword = e.detail.value this.diseaseSearchKeyword = keyword if (this.diseaseSearchTimer) { clearTimeout(this.diseaseSearchTimer) } // 如果关键词为空,加载所有病情 if (!keyword || keyword.trim() === '') { this.loadAllDiseases() return } // 有关键词时进行搜索 this.diseaseSearchTimer = setTimeout(() => { this.searchDiseaseByKeyword(keyword) }, 300) } ``` ### 4. 优化空数据提示文案 - 根据是否有搜索关键词显示不同的提示 ```vue {{ diseaseSearchKeyword ? '未找到相关疾病' : '暂无病情数据' }} ``` ## 后端支持说明 后端接口 `/system/icd10/search` 已支持空关键词查询: ### Controller层 - `keyword` 参数设置为 `required = false` - 允许传入空值或不传值 ### Mapper XML ```xml ``` **关键特性:** - 当 `keyword` 为空时,返回前50条有效病情(`ICDState IS NULL OR ICDState = 1`) - 按病情名称 `icd_name` 排序 - 限制返回数量为50条,避免数据量过大 ## 用户操作流程 ### 流程图 ``` 点击"添加病情" ↓ 弹窗打开,自动加载显示所有病情(前50条) ↓ 用户可以: 1. 直接浏览选择 ← 新增功能 2. 输入关键词过滤 ↓ 选择完成后点击"确定" ↓ 病情显示在表单中 ``` ## 优势分析 ### 1. 提升用户体验 - ✅ 减少操作步骤,打开即可浏览 - ✅ 常见病情一目了然 - ✅ 支持两种选择方式:浏览和搜索 ### 2. 保持性能 - ✅ 限制返回50条,避免数据过载 - ✅ 保留防抖机制,优化搜索性能 - ✅ 按名称排序,便于查找 ### 3. 灵活性 - ✅ 支持空查询和关键词查询 - ✅ 输入搜索时实时过滤 - ✅ 清空搜索框后恢复默认列表 ## 测试要点 1. **默认加载测试** - 打开病情选择弹窗 - 验证是否自动显示病情列表 - 验证是否最多显示50条数据 2. **搜索功能测试** - 输入疾病名称关键词 - 输入ICD编码 - 输入助记码(拼音首字母) - 验证搜索结果是否准确 3. **清空搜索测试** - 输入关键词后再清空 - 验证是否重新显示所有病情 4. **选择功能测试** - 选择单个病情 - 选择多个病情 - 取消选择 - 验证确认后是否正确显示 ## 注意事项 1. **数据库性能** - ICD10表建议在 `icd_name`、`icd_code`、`zjm` 字段上建立索引 - 定期维护 `ICDState` 字段,确保数据有效性 2. **数据量控制** - 当前限制返回50条 - 如需调整,修改Mapper XML中的 `TOP 50` 3. **后续优化建议** - 可考虑添加分页加载(上拉加载更多) - 可添加病情分类筛选 - 可添加收藏常用病情功能 ## 相关文件 ### 前端 - `app/pages/task/create-emergency.vue` - 任务创建页面 - `app/api/icd10.js` - ICD-10 API接口 ### 后端 - `ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/Icd10Controller.java` - 控制器 - `ruoyi-system/src/main/java/com/ruoyi/system/mapper/Icd10Mapper.java` - Mapper接口 - `ruoyi-system/src/main/resources/mapper/system/Icd10Mapper.xml` - SQL映射 - `ruoyi-system/src/main/java/com/ruoyi/system/domain/Icd10.java` - 实体类 ## 修改日期 2025-10-18