# 入场隔离登记 — 前端技术方案 > 依据:`入场隔离登记功能需求.md`、`入场隔离登记技术方案.md`;布局对齐 `tradeMarket/supplier/index.vue`(双 `el-card`);字段 **小驼峰**。 --- ## 1. 页面与路由 | 项 | 说明 | | --- | --- | | **Vue 路径** | `ruoyi-ui/src/views/tradeMarket/entryIsolation/index.vue` | | **组件名** | `TradeMarketEntryIsolation` | | **菜单配置** | 组件路径:`tradeMarket/entryIsolation/index`(「交易市场平台」目录下,手工配置) | | **权限前缀** | `tradeMarket:entryIsolation:list\|query\|add\|edit\|remove` | --- ## 2. API 模块 | 项 | 说明 | | --- | --- | | **文件** | `ruoyi-ui/src/api/tradeMarket/entryIsolation.js` | | **Base** | `/tradeMarket/entryIsolation` | | 方法 | HTTP | 说明 | | --- | --- | --- | | `listEntryIsolation` | GET | `/list` | | `getEntryIsolation` | GET | `/{id}` | | `addEntryIsolation` | POST | `/` | | `updateEntryIsolation` | PUT | `/` | | `delEntryIsolation` | DELETE | `/{ids}` | **关联接口(下拉数据)** | 方法 | 文件 | 说明 | | --- | --- | --- | | `listSupplier` | `supplier.js` | 供应商下拉/筛选 | | `listIsolationPen` | `isolationPen.js` | 分圈圈位下拉 | | `getIsolationSetting` | `isolationPen.js` | 新增默认隔离天数 | --- ## 3. 页面结构 1. **筛选区**:进场日期 `daterange` → `entryDateStart`/`entryDateEnd`;检疫证号模糊;供应商精确;搜索、重置、新增。 2. **列表区**:进场时间、供应商、检疫证号、数量、圈位分配表链接、隔离天数、解除日期、操作。 3. **新增/编辑弹窗**:主表字段 + 检疫证单文件上传 + 耳标文本(逗号分隔)+ 预计解除日期只读 + 分圈表格。 4. **添加分圈子弹窗**:圈位单选、耳标多选(排除已占用)、数量=已选耳标数。 5. **查看弹窗**:只读主表与分圈表;可进编辑。 6. **圈位分配表弹窗**:列表行快捷查看分圈明细。 --- ## 4. 业务规则(前端) | 规则 | 实现 | | --- | --- | | 进场日期区间 | `queryDateRange` 绑定 `daterange`,查询拆为 `entryDateStart`、`entryDateEnd` | | 耳标解析 | `parseEarTags`:英文/中文逗号分隔、trim、去重;单段 1~32 字 | | R1 | 保存前 `quantity === earTagList.length`;失焦耳标时自动同步数量 | | R2~R5 | `validateConsistencyBeforeSubmit`:分圈数量之和、耳标并集、跨圈重复、圈位不重复 | | 预计解除日期 | `recalcExpectedReleaseDate`:`DATE(entryTime) + isolationDays`(自然日) | | 默认隔离天数 | 新增时 `getIsolationSetting`,无配置兜底 **3** 天 | | 检疫证文件 | `/common/upload`;后缀白名单;≤30MB;选填 | | 分圈提交 | `penAllocList: [{ penId, earTagList }]`,不传子表 quantity | | OCR | 界面提示「即将上线」,不调用识别接口 | --- ## 5. 国际化 | 项 | 说明 | | --- | --- | | **语言包** | `tradeMarket.entryIsolation`(`lang/zh/tradeMarket.js`、`lang/bo/tradeMarket.js`) | | **Mixin** | `tradeMarketLocaleMixin`,`tmNs = 'entryIsolation'`,方法 `tmT` / `tmCommon` | --- ## 6. 联调说明 1. 部署 `BizEntryIsolationController` 及 `biz_entry_isolation`、`biz_entry_isolation_alloc` 表。 2. 预置供应商、隔离圈位及默认隔离天数配置。 3. 菜单组件 `tradeMarket/entryIsolation/index`,权限与后端一致。 4. 验证:日期区间筛选、新增分圈、R1~R5 前后端双重校验、修改全量覆盖分圈、逻辑删除、双语切换。 --- ## 7. 文件清单 | 类型 | 路径 | | --- | --- | | 页面 | `ruoyi-ui/src/views/tradeMarket/entryIsolation/index.vue` | | API | `ruoyi-ui/src/api/tradeMarket/entryIsolation.js` | | Mixin | `ruoyi-ui/src/mixins/tradeMarketLocaleMixin.js`(复用) | | i18n | `ruoyi-ui/src/lang/zh/tradeMarket.js`、`lang/bo/tradeMarket.js`(`entryIsolation` 节点) | --- ## 8. 修订记录 | 版本 | 说明 | | --- | --- | | 1.0 | 初版:双卡片 CRUD、分圈子弹窗、R1~R5 前端校验、检疫证上传、汉藏 i18n |