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

> 依据：`doc/药物禁配标准/药物禁配标准管理技术方案.md`、`ruoyi-ui/doc/药物禁配标准.md`；列表与卡片布局对齐 `ruoyi-ui/src/views/breedingStandards/breedingManage/index.vue`（本模块无附件上传、无发布/下架）；请求与表单字段统一 **小驼峰**，与后端 `BizDrugIncompatibilityStandard` / `BizDrugIncompatibilityCompanion` 及 Jackson 序列化一致。

---

## 1. 页面与路由

| 项 | 说明 |
| --- | --- |
| **Vue 路径** | `ruoyi-ui/src/views/breedingStandards/diseaseTreatment/drugIncompatibility/index.vue` |
| **组件名** | `DrugIncompatibilityStandard` |
| **菜单配置** | 若依「菜单管理」组件路径：`breedingStandards/diseaseTreatment/drugIncompatibility/index` |
| **权限前缀** | `drugIncompatibility:standard:`（**无** `publish`、`offline`） |

---

## 2. API 模块

| 项 | 说明 |
| --- | --- |
| **文件** | `ruoyi-ui/src/api/breedingStandards/drugIncompatibility.js` |
| **Base Path** | `/drugIncompatibility/standard` |

封装方法：`listDrugIncompatibilityStandard`、`getDrugIncompatibilityStandard`、`addDrugIncompatibilityStandard`、`updateDrugIncompatibilityStandard`、`delDrugIncompatibilityStandard`、`syncKbDrugIncompatibilityStandard`、`removeKbDrugIncompatibilityStandard`。

---

## 3. 列表与查询

- **分页**：`pageNum`、`pageSize`（默认 20）。
- **筛选**：`keyword`（**仅**主药名称 `mainDrugName` 模糊，与后端查询对象 `keyword` 一致）。
- **表格列**：主药名称、配伍结果（空显示「—」）、配伍药物数（`companionCount`）、知识库同步、创建时间、操作列。
- **列表行**：不含 `companions` 明细；详情接口返回主表 + 有序 `companions`。

---

## 4. 表单与请求体

| 字段 | 说明 |
| --- | --- |
| `mainDrugName` | 必填，1～20 字；**全表唯一**（保存失败展示「主药名称已存在」） |
| `compatResult` | 选填，≤20 字；空串提交时省略（由后端存 `NULL`） |
| `companions` | 至少 1 条；每项仅提交 `companionDrugName`（1～20 字）；顺序即展示/落库顺序 |

前端对配伍列表做与 `DrugIncompatibilityStandardValidation` 一致的校验：非空、长度、与主药去重后不相等、配伍名互不重复（trim 后）。

编辑时由详情接口拉取 `companions` 填入动态行；**不**向前端暴露或提交 `kbSyncStatus`、`kbDocId`（由服务端维护）。

---

## 5. 操作按钮与知识库状态

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

---

## 6. 国际化

文案命名空间：`breedingStd.dic`（`stdNs: "dic"`，`breedingStdLocaleMixin` 的 `stdT`）。

语言文件：`ruoyi-ui/src/lang/zh/breedingStd.js`、`ruoyi-ui/src/lang/bo/breedingStd.js` 中新增 `dic` 节点。

---

## 7. 与休药期标准页的共性

同属「疾病诊疗」子目录下的标准 CRUD 页：双卡片、表格 + 分页、`v-hasPermi`、知识库同步/移出确认弹窗、无发布/下架。

本模块特有：**主表 + 配伍子表** 一对多编辑（动态增删行、自定义 `companions` 校验器）。
