# 休药期标准管理 — 前端技术方案 > 依据:`休药期标准管理技术方案.md`(同目录,下称**总方案**)。本模块**无发布/下架**、无附件上传;仅 **知识库同步** 单维状态机。请求与表单字段统一 **小驼峰**,与后端 `BizWithdrawalPeriodStandard` 及 Jackson 序列化一致。 --- ## 1. 技术架构 | 项 | 说明 | | --- | --- | | **工程** | 若依 **RuoYi-Vue** 前端(Vue **2.x** + **Element UI**) | | **页面路径** | `ruoyi-ui/src/views/breedingStandards/diseaseTreatment/withdrawalPeriod/index.vue` | | **组件名** | `WithdrawalPeriodStandard` | | **布局参考** | 双 `el-card`(查询区 + 表格区);新增/编辑弹窗 + 查看弹窗 | | **国际化** | `breedingStdLocaleMixin`,命名空间 `breedingStd.wp` | --- ## 2. 源码与路由 | 类型 | 路径 | | --- | --- | | 页面 | `ruoyi-ui/src/views/breedingStandards/diseaseTreatment/withdrawalPeriod/index.vue` | | API 模块 | `ruoyi-ui/src/api/breedingStandards/withdrawalPeriod.js` | **菜单配置**:组件路径 `breedingStandards/diseaseTreatment/withdrawalPeriod/index`;权限前缀 `withdrawalPeriod:standard:`(**无** `publish`、`offline`)。 --- ## 3. 页面结构 ### 3.1 查询区 | UI | 绑定/说明 | | --- | --- | | 药物名称 | `queryParams.keyword`,**仅** `drug_name` 模糊匹配(总方案 **§3.1**) | | 药物类型 | `queryParams.drugType`,`1`~`4` 精确筛选,可清空 | | 新增 | 权限 `withdrawalPeriod:standard:add` | ### 3.2 列表区 | 列 | 字段 | 备注 | | --- | --- | --- | | 药物名称 | `drugName` | — | | 药物类型 | `drugType` | `drugTypeLabel` | | 休药期(天) | `withdrawalDays` | — | | 使用指南 | `usageGuide` | 溢出省略 | | 药物作用 | `drugEffect` | 溢出省略 | | 知识库同步 | `kbSyncStatus` | `kbSyncStatusText` | | 创建时间 | `createTime` | `parseTime` | | 操作 | — | 见 **§5** | **分页**:默认 `pageNum=1`、`pageSize=20`。 ### 3.3 新增 / 编辑弹窗 | 字段 | 控件 | 校验 | | --- | --- | --- | | `drugName` | 输入框,`maxlength=20` | 必填 1~20;提交前 **trim**;全表唯一由后端校验 | | `drugType` | 下拉 | 必填,`1`~`4` | | `withdrawalDays` | `el-input-number` | 必填整数 **1~999** | | `usageGuide` | 多行文本 | 必填 1~200 字 | | `drugEffect` | 多行文本 | 必填 1~200 字 | **编辑条件**:仅 `kbSyncStatus === 0`(总方案 **§3.4**)。已同步点编辑提示 `ruleSyncedNoEdit`,不打开弹窗。 ### 3.4 查看弹窗 展示 **§3.3** 全部字段 + `kbSyncStatus`、`kbDocId`(便于验收占位 ID)、`createTime`、`updateTime`。 --- ## 4. 药物类型枚举(总方案 §2.2) 页面 `drugTypeOptions` 由 `1`~`4` 映射国际化文案,**非**资讯类别接口: | 值 | 文案(示例) | | --- | --- | | `1` | 抗生素 | | `2` | 抗原虫 | | `3` | 抗病毒 | | `4` | 激素 | --- ## 5. 操作按钮与权限 本模块**仅有**知识库同步维度(功能需求 **§5** 操作矩阵)。 | 按钮 | 权限标识 | 显示条件 | | --- | --- | --- | | 查看 | `withdrawalPeriod:standard:query` | 有权限即显 | | 同步知识库 | `withdrawalPeriod:standard:syncKb` | `kbSyncStatus === 0` | | 移出知识库 | `withdrawalPeriod:standard:removeKb` | `kbSyncStatus === 1` | | 编辑 | `withdrawalPeriod:standard:edit` | `kbSyncStatus === 0` | | 删除 | `withdrawalPeriod:standard:remove` | `kbSyncStatus === 0` | 已同步记录点编辑/删除时前端提示 `ruleSyncedNoEdit` / `ruleDeleteNeedRemoveKb`(双重守卫,与按钮 `v-if` 一致)。 --- ## 6. API 模块(总方案 §3) 文件:`ruoyi-ui/src/api/breedingStandards/withdrawalPeriod.js`,Base Path `/withdrawalPeriod/standard`。 | 方法 | HTTP | URI | | --- | --- | --- | | `listWithdrawalPeriodStandard` | GET | `/list` | | `getWithdrawalPeriodStandard` | GET | `/{id}` | | `addWithdrawalPeriodStandard` | POST | `/` | | `updateWithdrawalPeriodStandard` | PUT | `/` | | `delWithdrawalPeriodStandard` | DELETE | `/{ids}` | | `syncKbWithdrawalPeriodStandard` | POST | `/syncKb/{id}` | | `removeKbWithdrawalPeriodStandard` | POST | `/removeKb/{id}` | **列表查询参数**:`pageNum`、`pageSize`、`keyword`、`drugType`。 --- ## 7. 错误与交互约定 | 场景 | 前端行为 | | --- | --- | | 药物名称重复 | 展示后端 `msg`(如「药物名称已存在」) | | 已同步点编辑 | `msgWarning(ruleSyncedNoEdit)` | | 已同步点删除 | `msgWarning(ruleDeleteNeedRemoveKb)` | | 同步 / 移出 / 删除 | `this.$modal.confirm` 二次确认 | --- ## 8. 与养殖标准页的差异 | 项 | 养殖标准 | 休药期标准 | | --- | --- | --- | | 正文/封面上传 | 有 | **无** | | 发布/下架 | 有 | **无** | | 状态机 | 上架 × 知识库 | **仅知识库** | | 列表筛选 | 关键词 + `standardType`(资讯类别编码) | 药物名称 + `drugType`(`1`~`4`) | --- ## 9. 交付与联调清单 - [x] 菜单路由指向 `breedingStandards/diseaseTreatment/withdrawalPeriod/index` - [x] 无 `publish` / `offline` 按钮与权限 - [ ] 后端 `/withdrawalPeriod/standard/**` 与总方案 **§3** 对齐 - [ ] 联调:新增 → 同步 → 移出 → 编辑 → 再同步 → 删除 - [ ] 联调:已同步编辑/删除被前端拦截;药物名称唯一性后端校验 --- ## 10. 文档修订记录 | 版本 | 日期 | 说明 | | --- | --- | --- | | v1.0 | 2026-05-13 | 初稿:页面、API、权限与后端 Controller 对齐 | | **v1.1** | **2026-06-01** | 对齐总方案/功能需求:**无发布下架**单维知识库状态机;`keyword` 仅药物名称;提交 `drugName` trim;已同步编辑/删除提示;查看弹窗展示 `kbDocId` |