# 隔离巡查登记 — 前端技术方案

> 依据：`隔离巡查登记功能需求.md`、`隔离巡查登记技术方案.md`；布局对齐 `tradeMarket/entryIsolation/index.vue`（双 `el-card`）；字段 **小驼峰**。

---

## 1. 页面与路由

| 项 | 说明 |
| --- | --- |
| **Vue 路径** | `ruoyi-ui/src/views/tradeMarket/isolationPatrol/index.vue` |
| **组件名** | `TradeMarketIsolationPatrol` |
| **菜单配置** | 组件路径：`tradeMarket/isolationPatrol/index`（「交易市场平台」目录下，手工配置） |
| **权限前缀** | `tradeMarket:isolationPatrol:list\|query\|add\|edit\|remove` |

---

## 2. API 模块

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

| 方法 | HTTP | 说明 |
| --- | --- | --- |
| `listIsolationPatrol` | GET | `/list` |
| `getIsolationPatrol` | GET | `/{id}` |
| `addIsolationPatrol` | POST | `/` |
| `updateIsolationPatrol` | PUT | `/` |
| `delIsolationPatrol` | DELETE | `/{ids}` |
| `listPatrolPenOptions` | GET | `/penOptions` |
| `listPatrolPenEarTags` | GET | `/penEarTags?penId=` |

---

## 3. 页面结构

1. **筛选区**：巡查日期 `daterange` → `patrolDateStart`/`patrolDateEnd`；圈位编号模糊；搜索、重置、新增。  
2. **列表区**：巡查时间、圈位编号、巡查照片（缩略图预览）、巡查内容描述、处理情况、病死病害数量、耳标号、操作。  
3. **新增/编辑弹窗**：巡查时间、圈位（在栏下拉）、病死病害数量、文案联动、条件展示耳标多选、单图上传。  
4. **查看弹窗**：只读全字段 + 审计信息；可进编辑、删除。

---

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

| 规则 | 实现 |
| --- | --- |
| 巡查日期区间 | `queryDateRange` 绑定 `daterange`，查询拆为 `patrolDateStart`、`patrolDateEnd` |
| 数量联动文案 | `onSickDeadQtyChange`：0 → 正常/无需处理；>0 → 异常/需要处理（i18n 默认文案） |
| 耳标区显示 | `showEarTagField`：`sickDeadQty > 0` 时展示多选 |
| 换圈位 | `onPenChange` 清空耳标并 `listPatrolPenEarTags` |
| P1～P3 | `validateEarTagList`：0 无耳标；>0 个数=数量且须在 `penEarTagOptions` 内 |
| 巡查时间 | `validatePatrolTime`：必填且 ≤ 当前时间 |
| 巡查照片 | `/common/upload`；`jpg/jpeg/png`；≤10MB；选填；`photoUrl`/`photoPath` |
| 提交 Body | `buildSubmitPayload`：`qty=0` 时 `earTagList=[]` |
| 无在栏圈位 | `penOptions` 空时提示 `tipNoPenInStock`，阻止保存 |

---

## 5. 国际化

| 项 | 说明 |
| --- | --- |
| **语言包** | `tradeMarket.isolationPatrol`（`lang/zh/tradeMarket.js`、`lang/bo/tradeMarket.js`） |
| **Mixin** | `tradeMarketLocaleMixin`，`tmNs = 'isolationPatrol'`，`tmT` / `tmCommon` |

---

## 6. 联调说明

1. 部署 `BizIsolationPatrolController` 及表 `biz_isolation_patrol`（见后端技术方案）。  
2. 预置入场隔离登记在栏数据（`expected_release_date >= 今天` 且已分圈）。  
3. 菜单组件 `tradeMarket/isolationPatrol/index`，权限与后端一致。  
4. 验证：日期区间、圈位模糊、数量 0/>0 联动、耳标个数校验、照片上传、修改/逻辑删除、双语切换。

---

## 7. 文件清单

| 类型 | 路径 |
| --- | --- |
| 页面 | `ruoyi-ui/src/views/tradeMarket/isolationPatrol/index.vue` |
| API | `ruoyi-ui/src/api/tradeMarket/isolationPatrol.js` |
| Mixin | `ruoyi-ui/src/mixins/tradeMarketLocaleMixin.js`（复用） |
| i18n | `ruoyi-ui/src/lang/zh/tradeMarket.js`、`lang/bo/tradeMarket.js`（`isolationPatrol` 节点） |

---

## 8. 修订记录

| 版本 | 说明 |
| --- | --- |
| 1.0 | 初版：列表+CRUD 弹窗、在栏圈位/耳标接口、P1～P3 前端校验、照片上传、汉藏双语 |
