# 隔离巡查登记 — 前端技术方案 > 依据:`隔离巡查登记功能需求.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 前端校验、照片上传、汉藏双语 |