# 科技服务人员管理 — 前端技术方案

> 依据：同目录功能需求、技术方案；模式对齐「风险因子设置」：全局单套 GET + PUT；字段 **小驼峰**。

---

## 1. 页面与路由

| 项 | 说明 |
| --- | --- |
| **Vue 路径** | `ruoyi-ui/src/views/techService/techServicePersonnel/index.vue` |
| **组件名** | `TechServicePersonnel` |
| **菜单配置** | 组件路径：`techService/techServicePersonnel/index`（「牧业养殖科技服务」目录下） |
| **权限** | `techService:techServicePersonnel:query\|edit` |

本期 **无** 列表分页、删除、导入、导出。

---

## 2. API 模块

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

| 方法 | 路径 | 说明 |
| --- | --- | --- |
| `getTechServicePersonnel` | GET `/` | 获取当前单例填报；无记录时 `data` 为 `null` |
| `updateTechServicePersonnel` | PUT `/` | 保存可填人数；后端 upsert 并重算总人数 |

---

## 3. 页面结构

1. **单页卡片**：进入即加载配置。  
2. **科技特派员**：男性、女性、党员（选填）；总人数只读预览（= 男 + 女）。  
3. **农业事业单位**：初级、员级、中级、副高、管理级（选填）；总人数只读预览（五级合计）。  
4. **保存**：`edit` 权限；成功后重新拉取。  
5. **审计**：有 `updateTime` 时展示更新人、更新时间。

### 字段映射

| 界面 | 字段 |
| --- | --- |
| 特派员男/女/党员 | `envoyMaleCount` / `envoyFemaleCount` / `envoyPartyMemberCount` |
| 特派员总人数（派生） | `envoyTotalCount`（仅展示，不提交） |
| 初级～管理级 | `agriJuniorCount` … `agriManagementCount` |
| 事业总人数（派生） | `agriTotalCount`（仅展示，不提交） |

---

## 4. 业务规则

| 规则 | 实现 |
| --- | --- |
| 单例 | 无列表；进入页 GET 一次 |
| 人数 | 均可空；非负整数；单位「人」 |
| 特派员总人数预览 | 男、女皆空 →「—」；否则二者之和（党员不计入） |
| 事业总人数预览 | 五级皆空 →「—」；否则有值项之和 |
| 提交 | 仅可填字段；总人数由后端重算落库 |

---

## 5. 国际化

`techService.techServicePersonnel`（`lang/zh|bo/techService.js`）；页面 `tsNs = 'techServicePersonnel'`，复用 `techServiceLocaleMixin`（`tsT` / `tsCommon`）。

---

## 6. 联调说明

1. 执行 `sql/biz_tech_service_personnel.sql`。  
2. 菜单组件 `techService/techServicePersonnel/index`，权限见 §1。  
3. 验证：空库进入表单为空、保存后总人数正确、再次进入回填、党员不计入特派员总人数。

---

## 7. 文件清单

| 类型 | 路径 |
| --- | --- |
| 页面 | `ruoyi-ui/src/views/techService/techServicePersonnel/index.vue` |
| API | `ruoyi-ui/src/api/techService/techServicePersonnel.js` |
| i18n | `lang/zh/techService.js`、`lang/bo/techService.js` → `techServicePersonnel` |
| 前端技术方案 | 本文档 |

---

## 8. 修订记录

| 版本 | 说明 |
| --- | --- |
| 1.0 | 初版：单例 GET+PUT；两分区数值填报与总人数只读预览 |
