# 处方导入功能说明 ## 功能概述 在中医处方单组件中新增了"从处方库导入"功能,允许医生快速从处方库中选择已保存的处方模板,一键导入药材配方。 ## 使用位置 **组件路径:** `admin/src/components/tcm-prescription/index.vue` **功能位置:** 中药处方 (RP) 区域,"添加中药"按钮旁边 ## 使用方法 ### 1. 打开处方库 在编辑处方时,点击"从处方库导入"按钮,会弹出处方库选择对话框。 ### 2. 搜索处方 - 在搜索框中输入处方名称 - 按回车键或点击搜索按钮进行搜索 - 支持模糊搜索 ### 3. 选择处方 有两种方式导入处方: **方式一:点击"导入"按钮** - 在列表中找到需要的处方 - 点击右侧的"导入"按钮 **方式二:点击行** - 直接点击处方所在的行 - 自动导入该处方 ### 4. 导入结果 - 导入成功后,药材列表会自动填充 - 显示成功提示:已导入处方「处方名称」,共X味药材 - 对话框自动关闭 ## 功能特点 ### 1. 实时搜索 - 支持按处方名称搜索 - 清空搜索框自动刷新列表 ### 2. 分页显示 - 默认每页显示15条 - 支持切换每页10/15/20/50条 - 显示总记录数 ### 3. 详细信息 列表显示以下信息: - 处方名称 - 药材数量(X味) - 药材明细(药材名称 + 剂量) - 创建人 ### 4. 权限控制 - 显示自己创建的所有处方 - 显示其他人创建的公开处方 - 不显示其他人的私有处方 ### 5. 数据安全 - 深拷贝药材数据,避免引用问题 - 导入前验证药材数据是否存在 ## 界面示例 ``` ┌─────────────────────────────────────────────────────┐ │ 从处方库导入 [×] │ ├─────────────────────────────────────────────────────┤ │ [请输入处方名称搜索________________] [搜索] │ │ │ │ ┌─────────────────────────────────────────────────┐ │ │ │ 处方名称 │ 药材数量 │ 药材明细 │ 创建人 │ 操作 │ │ │ ├─────────────────────────────────────────────────┤ │ │ │ 六味地黄丸│ 6味 │ 熟地黄24g、山茱萸12g...│ │ │ │ │ │ │张医生│导入│ │ │ ├─────────────────────────────────────────────────┤ │ │ │ 补中益气汤│ 8味 │ 黄芪15g、党参10g... │ │ │ │ │ │ │李医生│导入│ │ │ └─────────────────────────────────────────────────┘ │ │ │ │ 共2条 [10] [15] [20] [50] [<] [1] [>] │ └─────────────────────────────────────────────────────┘ ``` ## 技术实现 ### 1. API接口 使用处方库列表接口: ```typescript prescriptionLibraryLists({ page_no: 1, page_size: 15, prescription_name: '搜索关键词', is_public: '' }) ``` ### 2. 数据结构 处方库返回的数据格式: ```typescript { lists: [ { id: 1, prescription_name: '六味地黄丸', herbs: [ { name: '熟地黄', dosage: 24 }, { name: '山茱萸', dosage: 12 }, // ... ], creator_name: '张医生', is_public: 1 } ], count: 10 } ``` ### 3. 导入逻辑 ```typescript const handleImportLibrary = (row: any) => { // 1. 验证数据 if (!row.herbs || row.herbs.length === 0) { feedback.msgWarning('该处方没有药材信息') return } // 2. 深拷贝数据 const importedHerbs = JSON.parse(JSON.stringify(row.herbs)) // 3. 替换当前药材列表 formData.herbs = importedHerbs // 4. 提示成功 feedback.msgSuccess(`已导入处方「${row.prescription_name}」`) // 5. 关闭对话框 showLibraryDialog.value = false } ``` ## 注意事项 ### 1. 数据覆盖 - 导入处方会**替换**当前的药材列表 - 如果已经添加了药材,导入后会被覆盖 - 建议在开始编辑时就导入处方 ### 2. 数据验证 - 导入前会验证处方是否有药材数据 - 如果处方为空,会提示错误 ### 3. 权限限制 - 只能看到自己的处方和公开的处方 - 私有处方不会显示在列表中 ### 4. 搜索范围 - 搜索只针对处方名称 - 不支持按药材名称搜索 ## 使用场景 ### 场景1:快速开方 医生经常开"六味地黄丸"处方,可以: 1. 点击"从处方库导入" 2. 搜索"六味地黄丸" 3. 点击导入 4. 药材自动填充,无需手动输入 ### 场景2:参考经典处方 医生想参考其他医生的处方: 1. 打开处方库 2. 浏览公开的处方 3. 选择合适的处方导入 4. 根据患者情况调整剂量 ### 场景3:标准化处方 医院推广标准处方: 1. 管理员创建标准处方并设为公开 2. 所有医生都能看到和使用 3. 确保处方的一致性 ## 优势 1. **提高效率** - 无需手动输入药材,节省时间 2. **减少错误** - 避免手动输入导致的错误 3. **标准化** - 使用标准处方模板,确保质量 4. **知识共享** - 医生之间可以分享处方经验 5. **快速学习** - 新医生可以参考资深医生的处方 ## 后续优化建议 1. **批量导入** - 支持一次导入多个处方 2. **处方预览** - 导入前预览处方详情 3. **智能推荐** - 根据诊断自动推荐处方 4. **使用统计** - 显示处方使用次数 5. **收藏功能** - 收藏常用处方,快速访问 ## 常见问题 ### Q1: 导入后可以修改吗? A: 可以。导入后可以自由添加、删除、修改药材。 ### Q2: 导入会覆盖已有的药材吗? A: 是的。导入会替换当前所有药材,建议在开始时就导入。 ### Q3: 为什么看不到某个处方? A: 可能是该处方设置为私有,只有创建者可见。 ### Q4: 可以导入后再保存到处方库吗? A: 可以。导入、修改后,可以通过"是否共享"选项保存为新的处方模板。 ### Q5: 搜索不到处方怎么办? A: 检查处方名称是否正确,或清空搜索框查看所有处方。 ## 技术支持 如有问题或建议,请联系技术支持团队。 --- **版本:** v1.0.0 **更新日期:** 2026-03-22 **状态:** ✅ 已完成