# 商品审核 — 前端技术方案

> **依据：** 《商品审核功能需求.md》v1.0、《商品审核技术方案.md》v1.0  
> **前端规范：** `doc/前端设计/前端设计.md`  
> **范围：** 仅 **ruoyi-ui 平台管理端** 监管列表、详情、审核、下架；商家发品 **不在 ruoyi-ui 实现**。  
> **实现状态：** 页面与 API 封装已落地，待后端 `/agri/goods` 联调。  
> **说明：** 与平台「商品管理」**共用** `/agri/goods` 接口与状态机（方案 A）。

---

## 1. 技术栈与写法约定

| 项 | 说明 |
|----|------|
| 框架 | Vue 2 + Element UI |
| 请求 | `@/utils/request` |
| 参考页面 | `ruoyi-ui/src/views/agri/org/merchantEntryApply/index.vue`（Tab + 角标） |
| 详情 | `ruoyi-ui/src/views/agri/org/merchant/detail.vue`（抽屉分区） |
| 商品状态 | `1` 待审 / `2` 出售中 / `3` 审核失败 / `4` 已下架；列表 **不含** `0` 未上架 |

---

## 2. 文件清单

| 类型 | 路径 | 说明 |
|------|------|------|
| 列表页 | `ruoyi-ui/src/views/agri/goods/audit/index.vue` | Tab、检索、批量审核/下架 |
| 详情抽屉 | `ruoyi-ui/src/views/agri/goods/audit/detail.vue` | 详情、单行审核/下架 |
| API | `ruoyi-ui/src/api/agri/goods.js` | list、detail、audit、offShelf |

**组件 name：** `AgriGoodsAudit`

---

## 3. 菜单与路由

| 菜单名称 | 组件路径 | 路由 path（建议） | 权限标识 |
|----------|----------|-------------------|----------|
| 商品审核 | `agri/goods/audit/index` | `goodsAudit` | `agri:goods:list` |

**上级菜单：** 农资管理 → **商品管理**

| 按钮权限 | 标识 |
|----------|------|
| 查看详情 | `agri:goods:query` |
| 审核 | `agri:goods:audit` |
| 下架 | `agri:goods:offshelf` |

---

## 4. 页面结构

```text
商品审核
├── 检索：编号、名称、店铺、状态
├── Tab：全部 / 待审核（角标） / 出售中 / 审核失败 / 已下架
├── 工具栏：批量通过、批量驳回、批量下架
├── 表格 + 多选 + 行内操作（按状态）
└── 详情抽屉（detail.vue）
    ├── 基础、归属、审核信息、服务快照、详情 HTML
    └── 待审：通过/驳回；出售中：下架
```

**默认 Tab：** 待审核（`goodsStatus=1`）。

---

## 5. 复用组件

| 组件 | 用途 |
|------|------|
| `ImagePreview` | 主图、服务图标 |
| `Pagination` / `RightToolbar` | 分页 |

---

## 6. API 对接

**基路径：** `/agri/goods`

| 前端方法 | HTTP | 路径 |
|----------|------|------|
| `listGoods` | GET | `/list` |
| `getGoodsPendingCount` | GET | `/pendingCount` |
| `getGoods` | GET | `/{goodsId}` |
| `auditGoods` | PUT | `/audit` |
| `offShelfGoods` | PUT | `/offShelf` |
| `goodsCategoryOptions` | GET | `/categoryOptions`（检索联动，预留） |

### 6.1 审核 Body

```json
{ "goodsIds": [1001], "pass": true }
```

驳回：

```json
{ "goodsIds": [1001], "pass": false, "rejectReason": "主图不清晰" }
```

### 6.2 下架 Body

```json
{ "goodsIds": [2001, 2002] }
```

### 6.3 批量规则（GR5）

前端 `canBatchAudit` / `canBatchOffShelf` 仅当所选 **全部** 为对应状态时可点；后端仍整批校验。

---

## 7. 交互要点

| 场景 | 行为 |
|------|------|
| 批量通过 | 所选须全部待审核 |
| 批量下架 | 所选须全部出售中 |
| 驳回 | 原因必填，max 500 |
| 详情 | 只读，不提供商家端编辑 |

---

## 8. 与关联模块边界

| 模块 | 关系 |
|------|------|
| 店铺设置 | 全局免审开关影响 submit 后是否进待审队列 |
| 商品服务 | 详情展示 **快照**，非实时目录 |
| 商品分类 | 列表展示 categoryPath |

---

## 9. 联调检查清单

- [ ] 列表不含 status=0  
- [ ] pendingCount 角标  
- [ ] 批量含非法状态整批失败  
- [ ] 驳回无原因拦截  
- [ ] 详情 serviceSnapshots 展示  

---

## 10. 非本期（前端）

商家端发品页、平台代改价、审核 SLA、独立 `/agri/goodsAudit` 路径（可选方案 B）。

---

## 11. 修订记录

| 版本 | 日期 | 说明 |
|------|------|------|
| v1.0 | 2026-05 | 首版 |

---

*文档版本：v1.0 · ruoyi-ui · 关联《商品审核功能需求.md》v1.0*
