西藏巴青项目

药物禁配标准管理前端技术方案.md 6.5KB

药物禁配标准管理 — 前端技术方案

依据:药物禁配标准管理技术方案.md(同目录,下称总方案)、药物禁配标准管理功能需求.md。本模块无发布/下架、无附件上传;仅 知识库同步 单维状态机;主表 + 配伍子表 一对多。请求与表单字段统一 小驼峰,与后端 BizDrugIncompatibilityStandard / BizDrugIncompatibilityCompanion 及 Jackson 序列化一致。


1. 技术架构

说明
工程 若依 RuoYi-Vue 前端(Vue 2.x + Element UI
页面路径 ruoyi-ui/src/views/breedingStandards/diseaseTreatment/drugIncompatibility/index.vue
组件名 DrugIncompatibilityStandard
布局参考 el-card(查询区 + 表格区);新增/编辑弹窗 + 查看弹窗
国际化 breedingStdLocaleMixin,命名空间 breedingStd.dic

2. 源码与路由

类型 路径
页面 ruoyi-ui/src/views/breedingStandards/diseaseTreatment/drugIncompatibility/index.vue
API 模块 ruoyi-ui/src/api/breedingStandards/drugIncompatibility.js

菜单配置:组件路径 breedingStandards/diseaseTreatment/drugIncompatibility/index;权限前缀 drugIncompatibility:standard: publishoffline)。


3. 页面结构

3.1 查询区

UI 绑定/说明
主药名称 queryParams.keyword main_drug_name 模糊匹配(总方案 §3.1
新增 权限 drugIncompatibility:standard:add

3.2 列表区

字段 备注
主药名称 mainDrugName
配伍结果 compatResult 空显示「—」
配伍药物数 companionCount 列表聚合字段,非持久化
知识库同步 kbSyncStatus kbSyncStatusText
创建时间 createTime parseTime
操作 §5

分页:默认 pageNum=1pageSize=20。列表行不含 companions 明细。

3.3 新增 / 编辑弹窗

字段 控件 校验
mainDrugName 输入框,maxlength=20 必填 1~20;提交前 trim
compatResult 输入框 选填 ≤50(后端校验);空串省略(后端存 NULL);前端 maxlength 待与后端对齐时可仍为 20
companions 动态行列表 至少 1 条;每项 companionDrugName 1~20;trim 后互不相同且均不等于主药名

配伍校验器 validateCompanionsField 与后端 DrugIncompatibilityStandardValidation 规则一致。编辑时由详情接口拉取有序 companions向前端暴露或提交 kbSyncStatuskbDocId

编辑条件:仅 kbSyncStatus === 0(总方案 §3.4)。已同步点编辑提示 ruleSyncedNoEdit,不打开弹窗。

3.4 查看弹窗

展示主药、配伍药物有序列表、配伍结果 + kbSyncStatuskbDocId(便于验收占位 ID)、createTimeupdateTime


4. 配伍子表编辑(本模块特有)

  • 动态 增加 / 减少 配伍药物行;至少保留 1 行。
  • 保存时按请求数组顺序提交 companions(仅 companionDrugName),对应后端子表全量替换(总方案 §1§3.4)。
  • 主药 blur 或配伍名 input 时触发 companions 字段重校验(主药与配伍互斥规则)。

5. 操作按钮与权限

本模块仅有知识库同步维度(功能需求 §5 操作矩阵)。

按钮 权限标识 显示条件
查看 drugIncompatibility:standard:query 有权限即显
同步知识库 drugIncompatibility:standard:syncKb kbSyncStatus === 0
移出知识库 drugIncompatibility:standard:removeKb kbSyncStatus === 1
编辑 drugIncompatibility:standard:edit kbSyncStatus === 0
删除 drugIncompatibility:standard:remove kbSyncStatus === 0

canEdit / canDelete / canSyncKb / canRemoveKb 使用 Number(kbSyncStatus) 比较。已同步记录点编辑/删除时前端提示 ruleSyncedNoEdit / ruleDeleteNeedRemoveKb(双重守卫,与按钮 v-if 一致)。


6. API 模块(总方案 §3)

文件:ruoyi-ui/src/api/breedingStandards/drugIncompatibility.js,Base Path /drugIncompatibility/standard

方法 HTTP URI
listDrugIncompatibilityStandard GET /list
getDrugIncompatibilityStandard GET /{id}
addDrugIncompatibilityStandard POST /
updateDrugIncompatibilityStandard PUT /
delDrugIncompatibilityStandard DELETE /{ids}
syncKbDrugIncompatibilityStandard POST /syncKb/{id}
removeKbDrugIncompatibilityStandard POST /removeKb/{id}

列表查询参数pageNumpageSizekeyword

请求体(新增/修改)mainDrugNamecompatResult(可空)、companions(≥1 条,每项 companionDrugName);修改时含 id


7. 错误与交互约定

场景 前端行为
配伍校验失败 表单字段错误(重名、与主药相同、条数不足等)
已同步点编辑 msgWarning(ruleSyncedNoEdit)
已同步点删除 msgWarning(ruleDeleteNeedRemoveKb)
同步 / 移出 / 删除 this.$modal.confirm 二次确认

8. 与养殖标准页的差异

养殖标准 药物禁配标准
正文/封面上传
发布/下架
状态机 上架 × 知识库 仅知识库
数据结构 单表 + 附件 主表 + 配伍子表 一对多
列表筛选 关键词 + standardType(资讯类别编码) 主药名称 keyword

9. 交付与联调清单

  • 菜单路由指向 breedingStandards/diseaseTreatment/drugIncompatibility/index
  • publish / offline 按钮与权限
  • 配伍动态行与 companions 校验
  • 后端 /drugIncompatibility/standard/** 与总方案 §3 对齐
  • 联调:新增 → 同步 → 移出 → 编辑配伍列表 → 再同步 → 删除
  • 联调:已同步编辑/删除被前端拦截

10. 文档修订记录

版本 日期 说明
v1.0 2026-05-13 初稿:双卡片 CRUD、主表+配伍子表、知识库同步/移出
v1.1 2026-06-01 对齐总方案/功能需求:无发布下架单维知识库状态机;keyword 仅主药名称;Number(kbSyncStatus) 判断;已同步编辑/删除提示;提交字段 trim;查看弹窗展示 kbDocId