# 综合牧业知识库 — 前端技术方案

> 依据：`综合牧业知识库管理功能需求.md`、`综合牧业知识库技术方案.md`；交互对齐 `breedingStandards/feeding/index.vue`（知识库同步/移出，无发布下架）。

---

## 1. 页面与路由

| 项 | 说明 |
| --- | --- |
| **Vue 路径** | `ruoyi-ui/src/views/techService/knowledge/index.vue` |
| **组件名** | `TechServiceKnowledge` |
| **菜单配置** | 组件路径：`techService/knowledge/index`（「牧业养殖科技服务」目录下，手工配置） |
| **权限前缀** | `techService:knowledge:list\|query\|add\|edit\|remove\|syncKb\|removeKb` |

---

## 2. API 模块

| 项 | 说明 |
| --- | --- |
| **文件** | `ruoyi-ui/src/api/techService/knowledge.js` |
| **Base** | `/techService/knowledge` |

| 方法 | HTTP | 说明 |
| --- | --- | --- |
| `listKnowledge` | GET | `/list`，Query：`pageNum`、`pageSize`（默认 20）、`keyword`、`knowledgeTopic`、`kbSyncStatus` |
| `getKnowledge` | GET | `/{id}` |
| `addKnowledge` | POST | `/` |
| `updateKnowledge` | PUT | `/` |
| `delKnowledge` | DELETE | `/{ids}` |
| `syncKbKnowledge` | POST | `/syncKb/{id}` |
| `removeKbKnowledge` | POST | `/removeKb/{id}` |

---

## 3. 页面结构

1. **筛选区**：关键词（标题/简介 OR 模糊）、知识主题五选一、入库状态；搜索、重置、新增。  
2. **列表区**：标题、主题、简介、知识文件链接、入库状态、创建时间、操作列。  
3. **新增/编辑弹窗**：标题、主题、简介（选填 ≤50）、知识内容单文件上传。  
4. **查看弹窗**：只读；未入库且有权时可进入编辑。

**无**发布/下架按钮；生命周期仅 **未入库 ↔ 已入库**。

---

## 4. 业务规则（前端）

| 规则 | 实现 |
| --- | --- |
| 入库状态 | `kbSyncStatus`：`0` 未入库 / `1` 已入库；`kbSyncStatusText` |
| 可编辑/删除/同步 | `kbSyncStatus === 0` |
| 可移出 | `kbSyncStatus === 1` |
| 知识主题 | `1`～`5`：饲养管理、疫病管理、设备选型、牧场设计、政策解读 |
| 标题 | 1～20 字 |
| 简介 | 选填，≤50 字 |
| 知识内容 | **服务端白名单**：`pdf`/`md`/`doc`/`docx`/`xls`/`xlsx`/`pptx`，≤30MB；`/common/upload` → `contentFileUrl`、`contentFilePath`、`contentFileName`。**说明**：页面 `contentFileExts` 本次未同步，**保存以服务端校验为准** |

---

## 5. 国际化

| 项 | 说明 |
| --- | --- |
| **语言包** | `techService.knowledge` + `techService.common`（`syncKb`、`removeKb`、`colKb` 等） |
| **Mixin** | `techServiceLocaleMixin`，`tsNs = 'knowledge'`，`kbSyncStatusText`、`knowledgeTopicText` |

---

## 6. 文件清单

| 路径 | 说明 |
| --- | --- |
| `src/views/techService/knowledge/index.vue` | 主页面 |
| `src/api/techService/knowledge.js` | API |
| `src/mixins/techServiceLocaleMixin.js` | 入库状态、主题文案 |
| `src/lang/zh/techService.js` | 汉语 |
| `src/lang/bo/techService.js` | 藏语 |

---

## 7. 联调说明

- 后端已实现 `BizLivestockKnowledgeController`，路径与权限见技术方案 §3。  
- 同步/移出失败时后端返回 `同步知识库失败：…` / `移出知识库失败：…`，前端由若依全局拦截展示。  
- 已入库记录编辑/删除由后端拒绝，列表按钮通过 `canEdit` 等前端方法按 `kbSyncStatus` 控制显隐。
