# 市场进栏登记 — 前端技术方案

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

---

## 1. 页面与路由

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

---

## 2. API 模块

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

| 方法 | HTTP | 说明 |
| --- | --- | --- |
| `listMarketEntry` | GET | `/list` |
| `getMarketEntry` | GET | `/{id}` |
| `addMarketEntry` | POST | `/` |
| `updateMarketEntry` | PUT | `/` |
| `delMarketEntry` | DELETE | `/{ids}` |
| `listStallOptions` | GET | `/stallOptions` |
| `listSupplierEarTags` | GET | `/supplierEarTags?supplierId=` |

**关联接口（下拉数据）**

| 方法 | 文件 | 说明 |
| --- | --- | --- |
| `listSupplier` | `supplier.js` | 供应商筛选/表单模糊搜索 |

---

## 3. 页面结构

1. **筛选区**：进栏日期 `daterange` → `entryDateStart`/`entryDateEnd`；栏位编号模糊；供应商精确；耳标号模糊；搜索、重置、新增。  
2. **列表区**：进栏时间、栏位编号、供应商、耳标号、数量（头）、操作（查看/编辑/删除）。  
3. **新增/编辑弹窗**：进栏时间、栏位下拉、供应商可搜、耳标多选、数量只读联动。  
4. **查看弹窗**：只读全字段 + 审计信息；可进编辑、删除。

---

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

| 规则 | 实现 |
| --- | --- |
| 进栏日期区间 | `queryDateRange` 绑定 `daterange`，查询拆为 `entryDateStart`、`entryDateEnd`；开始晚于结束则提示不查 |
| 进栏时间 | `validateEntryTime`：必填且 ≤ 当前时间；新增默认 `formatNow()` |
| 栏位 | `listStallOptions`；`stallId` 提交，列表展示 `stallCode` |
| 供应商 | 表单/筛选均 `listSupplier`；**更换供应商**时 `onSupplierChange` 清空耳标并重载 |
| 耳标池 | 选定供应商后 `listSupplierEarTags`（**A−B**）；编辑时 `mergeEarTagOptions` 合并已选耳标 |
| 数量 | `syncQuantity`：`quantity = earTagList.length`；表单项 `disabled` |
| R1～R6 | 前端校验必填、时间、耳标≥1、不重复、数量一致；占用/池外由后端 R4 拦截 |
| 删除确认 | `confirmDelete` 含供应商、栏位、时间、头数 |

---

## 5. 国际化

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

---

## 6. 联调说明

1. 部署 `BizMarketEntryController` 及 `biz_market_entry`、`biz_market_entry_ear_tag` 表。  
2. 预置有效市场栏位、供应商；入场隔离登记（隔离已结束）提供耳标来源。  
3. 菜单组件 `tradeMarket/marketEntry/index`，权限与后端一致。  
4. 验证：日期区间筛选、栏位/耳标模糊、供应商精确、新增/修改/删除、耳标联动数量、双语切换。

---

## 7. 文件清单

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

---

## 8. 修订记录

| 版本 | 说明 |
| --- | --- |
| 1.0 | 初版：列表+CRUD 弹窗、栏位/耳标接口、R1～R6 前端校验、数量联动、汉藏双语 |
