# 可支配收入数据填报 — 前端技术方案

> 依据：同目录 `可支配收入数据填报功能需求.md`、`可支配收入数据填报技术方案.md`；布局对齐存栏等填报页（双 `el-card` + 分页表格）；字段 **小驼峰**。

---

## 1. 页面与路由

| 项 | 说明 |
| --- | --- |
| **Vue 路径** | `ruoyi-ui/src/views/dataModel/disposableIncome/index.vue` |
| **组件名** | `DisposableIncome` |
| **菜单配置** | 组件路径：`dataModel/disposableIncome/index` |
| **权限前缀** | `dataModel:disposableIncome:list\|query\|add\|edit\|remove` |

无导入 / 导出按钮与接口。

---

## 2. API 模块

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

| 方法 | HTTP | 说明 |
| --- | --- | --- |
| `listDisposableIncome` | GET | `/list` 分页列表 |
| `getDisposableIncome` | GET | `/{id}` 详情 |
| `addDisposableIncome` | POST | `/` 新增 |
| `updateDisposableIncome` | PUT | `/` 修改 |
| `delDisposableIncome` | DELETE | `/{ids}` 删除 |
| `listDisposableIncomeYearOptions` | GET | `/yearOptions`（当前年起向前 5 年共 6 个） |

---

## 3. 页面结构

1. **筛选区**：所属年份；搜索、重置、新增。  
2. **列表区**：所属年份、农村居民人均可支配收入、增幅、增速、脱贫人口人均纯收入、操作。  
3. **操作列**：查看、修改、删除。  
4. **新增/编辑弹窗**：年份、人均可支配收入、增幅（选填）、增速（选填）、人均纯收入、备注；新增年份默认本年。  
5. **查看弹窗**：上述字段只读。

---

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

| 规则 | 实现 |
| --- | --- |
| 年份选项 | `/yearOptions`；列表筛选可清空；进入页不默认年份 |
| 必填 | `statYear`、`ruralDisposableIncome`、`povertyNetIncome`（≥0） |
| 增幅 / 增速表单 | **普通 `el-input`**（非 `el-input-number`），支持空值；提交空 → 不传/后端按 `null` 补齐 |
| 改年份或人均可支配收入 | 编辑态清空增幅、增速输入，与后端 `recalculateGrowth` 一致 |
| 列表 / 详情展示 | `formatIncrease`：`null` → `0.00`；`formatGrowthRate`：`null` → `0.00%`，有值则按库值直接 `toFixed(2)+%`（不再 ×100） |
| 收入金额展示 | `formatMoney` → 两位小数；空值 `—` |
| 唯一性 | 同年重复由后端拦截「该年份数据已存在」 |
| 删除 | `$modal.confirm` 后物理删除 |

### 4.1 字段映射

| 界面 | 字段 |
| --- | --- |
| 所属年份 | `statYear` |
| 农村居民人均可支配收入（元） | `ruralDisposableIncome` |
| 增幅（元） | `incomeIncrease` |
| 增速（百分数，如 12.28） | `incomeGrowthRate` |
| 脱贫人口人均纯收入（元） | `povertyNetIncome` |
| 备注 | `remark` |

---

## 5. 国际化

| 项 | 说明 |
| --- | --- |
| **语言包** | `dataModel.disposableIncome`、`dataModel.common` |
| **文件** | `lang/zh/dataModel.js`、`lang/bo/dataModel.js` |
| **Mixin** | `dataModelLocaleMixin`，`dmNs = 'disposableIncome'` |

---

## 6. 联调说明

1. 部署后端并执行 `sql/biz_disposable_income.sql`。  
2. 菜单组件 `dataModel/disposableIncome/index`，权限见 §1。  
3. 验证：新增默认本年；不填增幅增速时有上年则列表自动出现；改年份/可支配收入后重算；列表/详情 null 显示 `0.00` / `0.00%`；编辑回填时 null 保持空；无导入导出入口。

---

## 7. 文件清单

| 类型 | 路径 |
| --- | --- |
| 页面 | `ruoyi-ui/src/views/dataModel/disposableIncome/index.vue` |
| API | `ruoyi-ui/src/api/dataModel/disposableIncome.js` |
| Mixin | `ruoyi-ui/src/mixins/dataModelLocaleMixin.js` |
| i18n | `ruoyi-ui/src/lang/zh/dataModel.js`、`lang/bo/dataModel.js` |

---

## 8. 修订记录

| 版本 | 说明 |
| --- | --- |
| 1.0 | 初版：县级年度 CRUD；增幅/增速选填；列表详情 null 显示为 0；无导入导出 |
| 1.2 | 与需求对齐：改年份/可支配收入清空增幅增速；增速百分比展示 |
| 1.3 | 增速展示不再 ×100，按库值直接显示 |
