# 交易订单管理 — 前端技术方案

> 依据：`交易订单管理功能需求.md`、`交易订单管理技术方案.md`；布局对齐 `tradeMarket/marketEntry/index.vue`（双 `el-card`）；字段 **小驼峰**。

---

## 1. 页面与路由

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

---

## 2. API 模块

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

| 方法 | HTTP | 说明 |
| --- | --- | --- |
| `listTradeOrder` | GET | `/list` |
| `getTradeOrder` | GET | `/{id}` |
| `addTradeOrder` | POST | `/` |
| `updateTradeOrder` | PUT | `/` |
| `delTradeOrder` | DELETE | `/{ids}` |
| `listTradeOrderSupplierEarTags` | GET | `/supplierEarTags?supplierId=` |
| `completeTradeOrderPay` | PUT | `/completePay` |

**关联接口**

| 方法 | 文件 | 说明 |
| --- | --- | --- |
| `listSupplier` | `supplier.js` | 供应商筛选/表单 |
| `listDistributor` | `distributor.js` | 承销商筛选/表单 |
| `/common/upload` | — | 支付凭证上传 |

---

## 3. 页面结构

1. **筛选区**：订单编号模糊；供应商、承销商精确；搜索、重置、新增。  
2. **列表区**：编号、创建时间、双方、采购明细入口、头数、金额、状态标签、支付凭证缩略图、完成时间、操作。  
3. **新增/编辑弹窗**：供应商/承销商可搜、采购明细可增删行（耳标/重量/金额）、头数与金额只读联动。  
4. **完成支付弹窗**：单图上传 → `completePay`。  
5. **采购明细表弹窗**：列表快捷只读查看。  
6. **查看弹窗**：全字段 + 明细表 + 审计；待支付可编辑/删除。  
7. **打印**：待支付「打印小票」；已完成「打印凭证」（新窗口 HTML + `window.print()`）。

---

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

| 规则 | 实现 |
| --- | --- |
| 订单状态 | `0` 待支付 / `1` 已完成；操作按钮按 §8.7 矩阵显示 |
| 换供应商 | `onSupplierChange` 清空 `lineList` 并重载耳标 |
| 耳标下拉 | `listTradeOrderSupplierEarTags`（进栏子表）；`earTagOptionsForRow` 排除本单已选 |
| 明细校验 | 至少 1 行；耳标不重复；重量/金额 > 0 |
| 汇总 | `syncTotals`：`totalHeads = lineList.length`；`totalAmount = sum(amount)` 保留 2 位 |
| 完成支付 | `payVoucherUrl`/`payVoucherPath`；jpg/jpeg/png ≤10MB |
| 打印边界 | 小票仅待支付；凭证仅已完成 |
| 删除/编辑 | 前端拦截已完成；后端 R7 二次校验 |

---

## 5. 国际化

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

---

## 6. 联调说明

1. 部署 `BizTradeOrderController` 及 `biz_trade_order`、`biz_trade_order_line` 表。  
2. 预置供应商（含收费配置）、承销商、市场进栏耳标数据。  
3. 菜单组件 `tradeMarket/tradeOrder/index`，权限与后端一致。  
4. 验证：新增待支付、修改明细、完成支付生成结算单、打印、逻辑删除、双语切换。

---

## 7. 文件清单

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

---

## 8. 修订记录

| 版本 | 说明 |
| --- | --- |
| 1.0 | 初版：列表+CRUD、采购明细表、完成支付、打印小票/凭证、汉藏双语 |
