# 疫情上报 — 前端技术方案

> 依据：`疫情上报功能需求.md`、`疫情上报技术方案.md`；布局参考 `breedingStandards/breedingManage/index.vue`（双 `el-card`）；请求/响应字段 **小驼峰**。

---

## 1. 页面与路由

| 项 | 说明 |
| --- | --- |
| **Vue 路径** | `ruoyi-ui/src/views/diseaseDetection/epidemicReport/index.vue` |
| **组件名** | `EpidemicReport` |
| **菜单配置** | 若依「菜单管理」组件路径：`diseaseDetection/epidemicReport/index` |
| **权限标识** | `diseaseDetection:epidemicReport:list\|query\|add\|edit\|remove\|relieve` |

---

## 2. API 模块

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

| 方法 | HTTP | 路径 | 说明 |
| --- | --- | --- | --- |
| `listEpidemicReport` | GET | `/list` | 分页；Query：`pageNum`、`pageSize`、`transmissionRoute`、`riskLevel`、`relieveStatus` |
| `getEpidemicReport` | GET | `/{id}` | 详情 |
| `addEpidemicReport` | POST | `/` | 新增（不含 `releaseDate`） |
| `updateEpidemicReport` | PUT | `/` | 修改（含 `id`；仅未解除） |
| `delEpidemicReport` | DELETE | `/{ids}` | 批量删除，逗号分隔 |
| `relieveEpidemicReport` | PUT | `/relieve` | Body：`id`、`releaseDate` |

---

## 3. 页面结构

1. **筛选区**（`el-card`）：传播途径、风险等级、处置状态（0 未解除 / 1 已解除）；搜索、重置、新增、批量删除。  
2. **列表区**（`el-card`）：表格 + 分页；列含上报日期、传播途径、疫病类型/名称、风险等级、涉疫点位/轨迹、处置状态、解除日期、创建时间。  
3. **新增/编辑弹窗**：`reportDate`、`transmissionRoute`、`affectedLocationTrack`、`epidemicType`、`epidemicName`、`riskLevel`；**不**含解除日期。  
4. **解除弹窗**：仅 `releaseDate`；日期选择器禁用早于当前行 `reportDate`、晚于今天。  
5. **查看弹窗**：只读展示全部字段及审计信息。

**行内操作**

| 处置状态 | 可用按钮 |
| --- | --- |
| 未解除 | 查看、编辑、解除、删除 |
| 已解除 | 查看、删除 |

前端以 `releaseDate` 非空或 `relieveStatus === 1` 判定「已解除」（`diseaseDetectionLocaleMixin.isReleased`）。

---

## 4. 枚举与展示

| 字段 | 编码 | i18n 键前缀 |
| --- | --- | --- |
| 传播途径 | 1～4 | `diseaseDetection.epidemicReport.transmission{n}` |
| 疫病类型 | 1～4 | `diseaseDetection.epidemicReport.epidemicType{n}` |
| 风险等级 | 1～3 | `diseaseDetection.epidemicReport.risk{n}` |

列表/表单使用 `el-select` + 计算属性 `*Options`；表格列通过 `transmissionLabel` 等方法转文案。

---

## 5. 国际化

| 项 | 说明 |
| --- | --- |
| **语言包** | `ruoyi-ui/src/lang/zh/diseaseDetection.js`、`ruoyi-ui/src/lang/bo/diseaseDetection.js` |
| **注册** | `zh-CN.js`、`bo.js` 挂载 `diseaseDetection` |
| **Mixin** | `diseaseDetectionLocaleMixin`：`ddT`（`data.ddNs = 'epidemicReport'`）、`ddCommon`、`relieveStatusText`、`isReleased` |

---

## 6. 校验与交互要点

- 新增/编辑：必填与长度（轨迹 1～500、疫病名称 1～50）与后端一致。  
- 编辑/解除前：若已解除，提示 `ruleReleasedNoEdit` / `ruleReleasedNoRelieve` 并中止。  
- 解除：`releaseDate` 必填；自定义校验 `≥ reportDate` 且 `≤ 今天`；确认后调用 `relieve` 接口。  
- 删除：单条带 `id` 确认文案；批量需先勾选。  
- 权限：`v-hasPermi` 控制按钮显隐。

---

## 7. 联调说明

1. 后端实现 `疫情上报技术方案.md` §3 接口及 `biz_epidemic_report` 表。  
2. 配置菜单与六项按钮权限。  
3. 验证：未解除可改/可解除；已解除隐藏编辑/解除；解除日期边界；筛选 `relieveStatus`。  
4. 当前仓库若尚无 Java 模块，可先 Mock 或对接完成后端再联调列表。

---

## 8. 修订记录

| 版本 | 说明 |
| --- | --- |
| 1.0 | 初版：列表 CRUD + 解除弹窗；对齐养殖标准管理双卡片布局 |
